【问题标题】:Python - WHILE loop nested in FOR loopPython - WHILE 循环嵌套在 FOR 循环中
【发布时间】:2020-10-09 15:18:31
【问题描述】:

我试图实现这个输出:

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 来解决此问题,但我想了解的是为什么每次 new for 时 count 变量都会重置 迭代开始。 提前致谢。

【问题讨论】:

  • ;后面的数字的构造规则是什么?总是i += 12?
  • 第一个while完成后,字母等于hello world的长度,所以count在第二次及以后的交互中永远不会增加。那么(在哪里)你应该(重新)初始化letter
  • 看起来您的代码和预期的输出不匹配
  • 初始化iter 是不必要的。 for-lops 为你做可变的东西。
  • @mrblewog 你说得对,我应该在每次完成 while 迭代后初始化(重置)letterforwhile 语句之间letter = 0

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


【解决方案1】:

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

【讨论】:

  • iter = 0 也是不必要的。
【解决方案2】:

这里发生的事情是您在交互后从未将 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 &lt; 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

【讨论】:

    【解决方案3】:

    那里!这可以通过在每个 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
    

    【讨论】:

      猜你喜欢
      • 2023-03-02
      • 2013-10-26
      • 1970-01-01
      • 2021-08-21
      • 2017-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-06
      相关资源
      最近更新 更多