While循环计数器混乱

时间:2020-07-23 22:16:23

标签: python while-loop counter nested-loops break

我正在使用while循环,但是我对如何以自己想要的方式突破它感到有些困惑。所以我在一个while循环中嵌套了一个for循环:

x = True
y = 0
while x:
  if y >= 5:
    x = False
    print('break')
  else:
      for x in range(7):
        y += 1 
        print('test')

我正在寻找的输出是打印出5个测试和一个中断。但是,每次我运行程序时,它都会打印出7项测试,然后再进行休息。我不确定,但我想我对while循环中的某些东西感到困惑!如果有人可以向我解释一下,请告诉我:)我已经找到解决方法,但是我想了解为什么它不起作用。

5 个答案:

答案 0 :(得分:2)

这是因为它在while循环中执行了整个for循环,因此y将在再次检查之前变为7。删除for循环将解决此问题。

x = True
y = 0
while x:
  if y >= 5:
    x = False
    print('break')
  else:
    y += 1 
    print('test')

答案 1 :(得分:2)

y = 0
while y < 5:
  print("test")
  y += 1
print("break")

会工作的。

当允许您直接设置条件时,在while循环中没有其他变量“ x”是没有意义的。

答案 2 :(得分:1)

因为内部循环将在外部循环的下一次迭代之前完成。即一旦内部循环开始,它将执行所有7次迭代,然后再开始while循环的下一次迭代。

您可以只使用一个循环来执行此操作。打印出“测试”增加计数器,并在if为5的条件下中断。

答案 3 :(得分:0)

尝试

i = 0
while True:
    if i == 5:
        break
    print('test')
    i = i + 1

答案 4 :(得分:0)

打印7 test而不是5的原因是,在返回到for语句的开始之前,整个while循环都已执行。我认为您的理解是,在for循环的一次迭代之后,您回到了while循环的开始,但这是不正确的:您的for循环在执行之前就已经完全执行了回到while循环的开始。

进入for循环后,您将y递增7次并打印test 7次。 y现在> = 5,您回到if语句中。 if语句将x设置为false,从而“关闭”了while循环,并打印了break语句。如果您只想打印5个test和一个break,则简化这样的代码会容易得多:

y = 0
while True:
    if y < 5:
        print('test')
        y += 1
    else:
        print('break')
        break
相关问题