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

时间:2012-12-19 22:37:48

标签: python for-loop while-loop break

当for> 10 for for循环时,

while不会中断:

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

并打印"ok" 100次。当whilei循环中达到10时,如何打破for循环?

5 个答案:

答案 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