[英]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.