10

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

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

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

4

5 回答 5

13

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

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

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

于 2012-12-19T22:41:55.330 回答
7
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()
于 2012-12-19T22:46:21.963 回答
1

问题是在内部循环完成之前不会检查外部循环的条件 - 此时i已经是 100。从我的角度来看,编写此代码并获得所需输出的正确方法是在内循环并在i达到 10 时将其中断。

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

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

于 2012-12-19T22:54:44.833 回答
0

那这个呢?

x = True 
while x:
    for i in range(20):
        if i>5:
            x = False
            break
        else:
            print(i)
于 2021-03-04T21:44:22.907 回答
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
于 2021-05-23T21:47:03.403 回答