10

whilei> 10 in forループの場合は壊れません:

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

"ok"そしてそれは100回印刷します。ループで10に達しwhileたときにループを解除するにはどうすればよいですか?ifor

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です。私の観点からすると、これを記述して目的の出力を取得する正しい方法は、内部にガードを配置することです。内側のループをi10に達したら壊します。

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 に答える