繁体   English   中英

如何在python的内部for循环中中断while循环?

[英]How to break while loop in an inner for loop in python?

当 i>10 在 for 循环中时, while不会中断:

i = 0
x = 100
while i<=10:
    for a in xrange(1, x+1):
        print "ok"
        i+=1

它打印了 100 次"ok" ifor循环中达到 10 时如何中断while循环?

在内部循环“返回”之前,永远不会重新检查外部循环中的条件。 如果每次i更改后都需要进行此检查,请执行以下操作:

while i<=10:
    for a in xrange(1, x+1):
        print "ok"
        i+=1
        if i > 10:
            break

break只会退出内循环,但由于外循环条件将评估为False ,它也会退出。

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

问题是在内循环完成之前不会检查外循环的条件 - 此时i已经是 100。从我的角度来看,编写它并获得所需输出的正确方法是在里面放一个守卫内循环并在i达到 10 时打破它。

for a in xrange(1, x+1):
    if i < 10:
        print "ok"
        i+=1
    else:
        break

如果您想在内循环内部时中断外循环还有其他原因,也许您应该让我们了解细节以更好地理解它。

那这个呢?

x = True 
while x:
    for i in range(20):
        if i>5:
            x = False
            break
        else:
            print(i)
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

暂无
暂无

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

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