为什么 for 循环接受单字母 int 变量而不是多字母?

我正在学习 python 中的基本 for 循环,并注意到变量“x”与变量“sides”相比可以正常工作。怎么来的?


我用谷歌搜索了循环,并了解了 range 和 xrange 之间的区别,但似乎与我的问题无关。以下显示了第一段有错误的代码:


ZeroDivisionError:在线整数除法或模数为零...


# This code leads to the ZeroDivisionError

import turtle

wn = 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 fine

import turtle

wn = 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 = sides


for sides in range(sides):


    mikey.down()

    mikey.forward(length)

    mikey.left(360/x)

为什么后者可以正常工作,而前者却不行?


繁华开满天机
浏览 123回答 2
2回答

POPMUISE

在第一个示例中,mikey.left(360/sides)第一次为零,因为您从 0 开始并上升到任何值边。在第二个示例中,x 等于任何整数边,在您单步执行的整个过程中。尽管在任何一种情况下,您都不应该将sides其用作迭代器变量,因为它已经被使用了。

Qyouu

在您的第二个代码块中,WAS in (来自输入)x正在编写。sides然后sides被可迭代的 from 覆盖range。所以在第一个代码块中sides被重写(第一次为 0)然后它是ZeroDivisionErrormikey.left(360/sides) # sides = 0 here在您使用的第二个代码块中x,它根本没有被覆盖,只有一个非零数字(并且它不会改变)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python