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