0

欢迎

我通常理解循环的概念以及它们是如何工作的。然而,我遇到了一个我无法理解的人

for i in range(10):
    for j in range(i):
        print(i, end="")
print()

这个循环将显示一个数字列表

1
22
333
4444
55555
666666
7777777
88888888
999999999

这正是我想要的......但我不明白为什么它在每一行打印相同的数字。如果打印了“j”变量,程序就会像我预期的那样工作。

0
01
012
0123
01234
012345
0123456
01234567
012345678

有人知道这是为什么吗?

编辑:

谢谢你的回答。我终于明白了(感觉很愚蠢,我以前没有)

4

2 回答 2

1

重复相同的字符是因为第二个for循环正在打印i,即来自外部循环的值。如果它正在打印j,它会看起来像您期望的那样。的值i仅在j循环完成后更改。在完成任何内部循环之前,外部循环不会重复。

如果即使在您打印之后这对您来说也不明显,那么您对循环j的了解似乎缺乏一些基本知识。for您将从学习使用调试器中受益匪浅,这对于任何软件工程师来说都是至关重要的第一天知识。

于 2020-11-19T19:59:49.927 回答
1
range(10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# your loop
for i in range(10):
    for j in range(i):
        print(i, end="")

让我稍微分解一下

range(10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# replacing 'i' with 'j'
for i in range(10):
    for j in range(i):
        print(j, end="")
i = 0 #range(0)
nil 
i = 1
#in nested loop range(1) = [0]
0
i = 2
#range(2) = [0,1]
0 1
#range(3) = [0, 1, 2]
0 1 2
#range(4) = [0, 1, 2, 3]
0 1 2 3
#range(5) = [0, 1, 2, 3, 4]
0 1 2 3 4

我希望现在有意义

于 2020-11-19T20:52:06.463 回答