While 循环计数器混淆

While Loop Counter Confusion

我正在使用 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 循环中的某些东西感到困惑!如果有人可以向我解释这一点,请告诉我 :) 我已经找到解决方法,但我想了解为什么它不起作用。

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

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

尝试

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

因为内循环将在外循环的下一次迭代之前完成。 IE。一旦内部循环开始,它会在开始 while 循环的下一次迭代之前完成所有 7 次迭代。

您只需使用一个循环即可完成此操作。打印出“测试”增加计数器并放入 if 条件以在计数器为 5 时中断。

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

会起作用。

当 while 循环允许您直接设置条件时,为 while 循环添加另一个变量(如“x”)毫无意义。

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

进入 for 循环后,您递增 y 7 次并打印 test 7 次。 y 现在 >= 5,然后您返回到 if 语句。 if 语句将 x 变为假,从而“关闭”while 循环,并打印出 break 语句。如果你只想打印出 5 test 和一个 break,那么简化你的代码会容易得多:

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