繁華開滿天機(jī)
2022-06-07 19:12:43
我正在學(xué)習(xí) python 中的基本 for 循環(huán),并注意到變量“x”與變量“sides”相比可以正常工作。怎么來的?我用谷歌搜索了循環(huán),并了解了 range 和 xrange 之間的區(qū)別,但似乎與我的問題無關(guān)。以下顯示了第一段有錯(cuò)誤的代碼:ZeroDivisionError:在線整數(shù)除法或模數(shù)為零...# 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貢獻(xiàn)1765條經(jīng)驗(yàn) 獲得超5個(gè)贊
在第一個(gè)示例中,mikey.left(360/sides)
第一次為零,因?yàn)槟鷱?0 開始并上升到任何值邊。
在第二個(gè)示例中,x 等于任何整數(shù)邊,在您單步執(zhí)行的整個(gè)過程中。
盡管在任何一種情況下,您都不應(yīng)該將sides
其用作迭代器變量,因?yàn)樗呀?jīng)被使用了。

Qyouu
TA貢獻(xiàn)1786條經(jīng)驗(yàn) 獲得超11個(gè)贊
在您的第二個(gè)代碼塊中,WAS in (來自輸入)x
正在編寫。sides
然后sides
被可迭代的 from 覆蓋range
。所以在第一個(gè)代碼塊中sides
被重寫(第一次為 0)然后它是ZeroDivisionError
mikey.left(360/sides) # sides = 0 here
在您使用的第二個(gè)代碼塊中x
,它根本沒有被覆蓋,只有一個(gè)非零數(shù)字(并且它不會(huì)改變)
添加回答
舉報(bào)
0/150
提交
取消