使用范围时,“TypeError: 'float' object cannot be interpreted as an integer”是什么意思?

新手上路,请多包涵

我不明白为什么我不能使用我的变量 c

代码:

 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)

我收到以下错误消息:

 Traceback (most recent call last):
  File "C:\Users\nick\Desktop\gridv2.py", line 35, in <module>
    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

原文由 remorath 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 849
2 个回答

在:

 for i in range(c/10):

结果你正在创建一个浮点数——要解决这个问题,请使用 int 除法运算符:

 for i in range(c // 10):

原文由 Jon Clements 发布,翻译遵循 CC BY-SA 3.0 许可协议

range() 只能使用整数,但除以 / 运算符总是得到浮点值:

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

再次使值成为整数:

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

或使用 // 楼层除法运算符:

 for i in range(c // 10):

原文由 Martijn Pieters 发布,翻译遵循 CC BY-SA 4.0 许可协议

推荐问题