Python - WHILE 循环嵌套在 FOR 循环中

Python - WHILE loop nested in FOR loop

我试图实现这个输出:

0;12
1;24
2;36
3;48
4;60

...但我得到了这个:

0;12
1;12
2;12
3;12
4;12

代码如下:

iter = 0
count = 0
letter = 0
for iter in range(5):
    while letter < len("hello, world"):
        letter+=1
        count+=1
    print("Iteration " + str(iter) + "; count is: " + str(count))

我设法通过在 print 语句中添加 count*(iter+1) 而不是 count 来解决这个问题,但我想了解的是为什么 count 变量每次新的 for 迭代开始时重置。 提前致谢。

letter 始终为 13,因为它没有重新初始化。所以 while 循环只会执行一次。要解决此问题,

count = 0
for iter in range(5):
    letter = 0
    while letter < len("hello, world"):
        letter+=1
        count+=1
    print("Iteration " + str(iter) + "; count is: " + str(count))

这里发生的事情是你从未在交互后将 letter 设置为 0。所以 letter 始终保持在 12。

像这样打印信件:

iter = 0
count = 0
letter = 0
for iter in range(5):
    while letter < 12:
        letter+=1
        count+=1
        print(letter)

输出:

1
2
3
4
5
6
7
8
9
10
11
12

第一次 while 迭代后 letter 保持在 12,因此 while letter < 12: 永远不会 运行 所以 count 永远不会增加。

确保在每个 while 循环后将 letter 设置为 0:

iter = 0
count = 0
letter = 0
for iter in range(5):
    while letter < 12:
        letter+=1
        count+=1
    letter=0

有!这可以通过在每个 while 循环后将字母重置为 0 来解决。 while 循环只会第一次 运行 因为在第二次,字母值增加到 13 并且不再 < len("hello, world").

iter = 0
count = 0
letter = 0
for iter in range(5):
    while letter < len("hello, world"):
        letter+=1
        count+=1
    print("Iteration " + str(iter) + "; count is: " + str(count))
    letter=0