2012-12-19 274 views
2

while不破裂當I> 10在for循環:如何打破循環中的內循環在python循環?

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

和它打印"ok" 100倍。如何在for循環中i達到10時如何打破while循環?

+4

只需將其放入一個函數並返回內部循環。 – sshannin

+0

爲什麼你使用= <而不是<=?這是一個錯字還是有這個特定的功能? –

+0

不,這是一個錯字。 – alwbtc

回答

6

直到內循環「返回」,外循環中的條件將不會被重新檢查。如果您需要此檢查後i的每一次變化發生,而是執行此操作:

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

break只會退出內部循環,但由於外環條件將評估爲False,將退出這一點。

+1

只要確保不要在for循環之後添加任何內容,或者在內部循環中斷後執行該操作。 –

+0

@MattBriançon是嗎?我以爲'while'會在'for'斷開後立即中斷? – alwbtc

+3

@alwbtc'while'不會中斷,除非發生以下任何一種情況:a)在其體內(嚴格在其體內,而不在其內部的環中)調用'break'; b)身體完成執行,條件評估爲「假」; c)你在其身體內(嚴格地說也是)調用'continue',並且條件評估爲'假'。 – mgibsonbr

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

的問題是,外循環的條件將不檢查,直到內部循環結束 - 在這一點上i已經是100。從我的角度來看,正確的方法寫這一點,得到需要的結果將是把保護內環內,打破它時i達到10

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

如果你爲什麼要打破外環,而你一些其他原因」重新在內部循環內,可能是否應該讓我們瞭解細節以便更好地理解它。