我正在学习 python 中的基本 for 循环,并注意到变量“x”与变量“sides”相比可以正常工作。怎么来的?我用谷歌搜索了循环,并了解了 range 和 xrange 之间的区别,但似乎与我的问题无关。以下显示了第一段有错误的代码:ZeroDivisionError:在线整数除法或模数为零...# This code leads to the ZeroDivisionErrorimport turtlewn = turtle.Screen()mikey = turtle.Turtle()sides = int(input("How many sides would you like your regular polygon to have?"))length = int(input("How long would you like the sides to be?"))color = ("What color would you like to fill the polygon?")for sides in range(sides): mikey.down() mikey.forward(length) mikey.left(360/sides)# this code works fineimport turtlewn = turtle.Screen()mikey = turtle.Turtle()sides = int(input("How many sides would you like your regular polygon to have?"))length = int(input("How long would you like the sides to be?"))color = ("What color would you like to fill the polygon?")x = sidesfor sides in range(sides): mikey.down() mikey.forward(length) mikey.left(360/x)为什么后者可以正常工作,而前者却不行?
2 回答
POPMUISE
TA贡献1765条经验 获得超5个赞
在第一个示例中,mikey.left(360/sides)
第一次为零,因为您从 0 开始并上升到任何值边。
在第二个示例中,x 等于任何整数边,在您单步执行的整个过程中。
尽管在任何一种情况下,您都不应该将sides
其用作迭代器变量,因为它已经被使用了。
Qyouu
TA贡献1786条经验 获得超11个赞
在您的第二个代码块中,WAS in (来自输入)x
正在编写。sides
然后sides
被可迭代的 from 覆盖range
。所以在第一个代码块中sides
被重写(第一次为 0)然后它是ZeroDivisionError
mikey.left(360/sides) # sides = 0 here
在您使用的第二个代码块中x
,它根本没有被覆盖,只有一个非零数字(并且它不会改变)
添加回答
举报
0/150
提交
取消