while
不会中断:
i = 0
x = 100
while i<=10:
for a in xrange(1, x+1):
print "ok"
i+=1
并打印"ok"
100次。当while
在i
循环中达到10时,如何打破for
循环?
答案 0 :(得分:8)
在内循环“返回”之前,外循环中的条件永远不会被重新检查。如果您需要在每次i
更改后进行此检查,请执行以下操作:
while i<=10:
for a in xrange(1, x+1):
print "ok"
i+=1
if i > 10:
break
break
只会退出内部循环,但由于外部循环条件将评估为False
,因此它也将退出。
答案 1 :(得分:4)
i = 0
x = 100
def do_my_loops():
while i<=10:
for a in xrange(1, x+1):
print "ok"
i+=1
if time_to_break:
return
do_my_loops()
其中time_to_break
是您正在检查的条件。
或者一般来说:
def loop_container():
outer_loop:
inner_loop:
if done:
return
loop_container()
答案 2 :(得分:1)
问题是在内循环结束之前不会检查外循环的条件 - 此时i
已经是100.从我的角度来看,正确的方法来编写它并获得所需的输出将守卫放在内环中并在i
达到10时打破它。
for a in xrange(1, x+1):
if i < 10:
print "ok"
i+=1
else:
break
如果还有其他原因导致您想要在内循环中打破外循环时,也许您应该让我们了解细节以便更好地理解它。
答案 3 :(得分:0)
这个怎么样?
x = True
while x:
for i in range(20):
if i>5:
x = False
break
else:
print(i)
答案 4 :(得分:0)
booked = False
for i in range(100, 200):
if booked:
break
while True:
for x in range(1, 3):
if booked:
break
result = 0
if result == 1:
booked = True
break
continue