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

时间:2020-06-19 11:15:20

标签: python loops for-loop while-loop nested-loops

我正在尝试实现以下输出:

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))

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

3 个答案:

答案 0 :(得分:0)

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))

答案 1 :(得分:0)

这里发生的事情是您在进行交互后永远不会将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从未增加。

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

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

答案 2 :(得分:0)

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

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