Sigo recibiendo este error para mi progtwig python simple: “TypeError: el objeto ‘float’ no se puede interpretar como un número entero”

No entiendo por qué no puedo usar mi variable c .

código:

 from turtle import * speed(0) hideturtle() c = 450 def grid(x,y,a): seth(0) pu() goto(x,y) pd() for i in range(4): forward(a) rt(90) for i in range(c/10): seth(0) forward(10) rt(90) forward(c) backward(c) for i in range(c/10): seth(0) rt(90) forward(10) rt(90) forward(c) backward(c) pu() goto(a+10,0) write("x") goto(0,a+10) write("y") pd() grid(0,0,c) grid(-c,0,c) grid(-c,c,c) grid(0,c,c) 

Recibo el siguiente mensaje de error:

 Traceback (most recent call last): File "C:\Users\nick\Desktop\gridv2.py", line 35, in  grid(0,0,c) File "C:\Users\nick\Desktop\gridv2.py", line 15, in grid for i in range(c/10): TypeError: 'float' object cannot be interpreted as an integer 

En:

 for i in range(c/10): 

Como resultado, estás creando un flotador; para solucionar esto, utiliza el operador de división int:

 for i in range(c // 10): 

range() solo puede trabajar con enteros, pero dividir con el operador / siempre da como resultado un valor flotante:

 >>> 450 / 10 45.0 >>> range(450 / 10) Traceback (most recent call last): File "", line 1, in  TypeError: 'float' object cannot be interpreted as an integer 

Hacer el valor un entero de nuevo:

 for i in range(int(c / 10)): 

o use el // operador de división de piso:

 for i in range(c // 10): 

Como se muestra a continuación, el range solo admite enteros:

 >>> range(15.0) Traceback (most recent call last): File "", line 1, in  TypeError: range() integer end argument expected, got float. >>> range(15) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14] >>> 

Sin embargo, c/10 es un flotante porque / siempre devuelve un flotador.

Antes de ponerlo en el range , debe hacer que c/10 un entero. Esto se puede hacer poniéndolo en int :

 range(int(c/10)) 

o usando // , que devuelve un entero:

 range(c//10)