考虑这段代码:
import turtle
import sys
# function that draws a square using turtle graphics:
def drawSquare(t, sz): # t is a turtle object and sz is the size of the square
for i in range(4):
t.forward(sz)
t.left(90)
def main():
sys.setExecutionLimit(300000)
wn = turtle.Screen() # setting up the window
wn.bgcolor('lightgreen')
alex = turtle.Turtle() # setting up the turtle object
alex.color('blue')
alex.speed(10)
for i in range(24): # drawing the shape
drawSquare(alex, 100)
alex.right(15)
wn.exitonclick()
main()
在最后一个 for 循环中,我使用 i
作为循环变量。但在 for 循环中,我还调用了 drawSquare()
函数,该函数还包含一个带有名为 i
的循环变量的 for 循环。
当我运行这个程序时,它给出的输出与我将两个循环变量之一的名称更改为 counter
时的输出相同。这只是巧合还是可以将一个 for 循环嵌套在另一个 for 循环中,并且它们具有相同的循环变量?
提前致谢。
最佳答案
这里有几件事需要理解:
变量i
在drawSquare()
和变量 i
在main()
是完全独立的变量。他们有相同的名字,但除此之外他们毫无共同之处。您可以有一千个名为 i
的变量在您的程序中,只要它们都是不同函数的本地函数,它们就不会交互。
第二个更微妙的问题是,如果嵌套两个 for
会发生什么?在单个函数内使用相同的控制变量进行循环。
for i in range(10):
for i in range(20):
print(i)
在本例中只有一个 i
变量,但这并不重要。内部循环重新分配用于外部循环的变量的值,但您可以在Python中重新分配循环变量,并且它对循环没有影响。在这里,您将得到数字 0..19 打印 10 次,正如您所期望的那样。
for
Python 中的循环遍历序列(或任何可迭代的内容)。它将依次将循环变量设置为可迭代的每个元素,但循环控制从不使用该变量的当前值,而是在内部保留所有控制信息。这意味着您不能只分配循环变量并期望它像其他语言中那样影响迭代。
关于python - 您可以将一个 for 循环嵌套在另一个 for 循环中,并且它们具有相同的循环变量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44020933/