我在弄清楚为什么我的代码是错误的时遇到了问题。
def draw_poly(t, n, size):
for s in (n):
t.forward(sz)
t.left(45)
draw_poly (liz, 8, 50)
我正在尝试制作一个八角形,但是它不断给我一个“'int'对象不可迭代”错误。
如果您能帮助我,我将永远感激不已,谢谢。
答案 0 :(得分:2)
for循环:
for s in (n):
期望n
具有某种可迭代性:list
,tuple
,dictionary
等,但是您传递的是整数(int
) -因此出现错误。
如果您希望s
取值0
,1
,2
,...
,n
,则应使用{ {1}}函数产生一个可迭代的数字序列,直到传递给它的数字为止。
因此,您可能想要的是:
range()
这将允许您在该代码块中使用整数变量for s in range(n):
。
如果要调试代码,通常有助于打印出变量的值,以检查变量的计算结果是否符合您的预期。
例如,
s
给予:
for i in range(4):
print(i)
这是意料之中的。
答案 1 :(得分:0)
正确的int迭代器应为range(int),因此,请使用以下命令:for s in range(n):
为了将来使用range()
:此函数将创建一个可迭代的int对象的列表。在某些情况下,使用xrange()
更好,特别是对于大循环。
即range(1000000000)
会在内存中创建一个巨大的对象,而xrange(1000000000)
不会在内存中创建一个大对象,尽管它的工作方式类似,可以为您一个一个一个的整数。