python - 您可以将一个 for 循环嵌套在另一个 for 循环中,并且它们具有相同的循环变量吗?

标签 python python-3.x loops for-loop turtle-graphics

考虑这段代码:

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 循环中,并且它们具有相同的循环变量?

提前致谢。

最佳答案

这里有几件事需要理解:

变量idrawSquare()和变量 imain()是完全独立的变量。他们有相同的名字,但除此之外他们毫无共同之处。您可以有一千个名为 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/

相关文章:

java - 在 Java 中循环 MIDI 序列

python - 警告 : multiple data types in column of very large dataframe

python - 如何在numpy中沿轴执行外减法

python - 尝试使用 python 对多台电脑执行 ping 操作。 。

python-3.x - Spacy 实体规则不适用于基数(社会安全号码)

c - 实验室代码逻辑错误,C程序初学者

java - 查找两个数组之间的重复值

python - 每个连接都有单独的线程?

python - 当主要玩家与图像(障碍物)发生碰撞时,您如何让游戏结束?

python - 为什么在进程启动后添加 python 日志处理程序时不使用?