繁体   English   中英

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

我正在寻找的 output 是打印出 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')
y = 0
while y < 5:
  print("test")
  y += 1
print("break")

会工作。

当 while 循环允许您直接设置条件时,为 while 循环设置另一个变量(如“x”)是没有意义的。

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

您只需使用一个循环就可以做到这一点。 打印出“test”增加计数器,并在计数器为 5 时放入 if 条件来中断。

尝试

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM