while
i> 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
たときにループを解除するにはどうすればよいですか?i
for
while
i> 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
たときにループを解除するにはどうすればよいですか?i
for
内側のループが「戻る」まで、外側のループの状態が再検査されることはありません。変更後に毎回このチェックを行う必要がある場合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