2016-04-04 83 views
1

如何使用函數打破函數外部的循環? 這裏是我的代碼:如何使用函數打破循環

for x in range(5): 
def display_grid(): 
    if px == 1: 
     print 
     print "Invalid input, please Use the format \'x,y\'" 
     print 
     return 
    elif nx == 1: 
     return 
    print '\n' *30 
    print p1 + p2 + p3 + p4 + p5 + p6 + p7 + p8 + p9 + p10 + p11 + p12 + p13 + p14 
    return 
while i > 0: 
    display_grid() 
    break 

返回只中斷功能和環路是有條件的,將保持上面印刷只有5次的發言,我想它,以便它會繼續打印,直到條件沒見過。謝謝!

+3

您需要'return'從功能('MY_VALUE = display_grid()')的一些價值,取決於值(例如,如果值爲TRUE;或' False'從循環中「斷開」或停留在其中 –

+0

事實上,允許函數隱式地跳出循環可能會非常令人困惑,例如,如果函數在循環外調用會發生什麼? –

+0

實際上,對於範圍(5)循環中的x,forx∈ran≥(5)forx∈ran≥(5)是否包含?函數定義是否意味着在它內部?whi≤ whi≤while循環?什麼是「px」和「nx」? – kdopen

回答

3

避免初始代碼中的顯而易見的問題(它可能在您閱讀此代碼時編輯過),這種類型的問題的常見方法是讓該函數返回一個值,該值用於調整外部環,從而:

def foo(): 
    ... 
    return need_to_be_called_again() 

while foo(): 
    ... # Do something 

這裏need_to_be_called_again()是簡單地用於確定是否不是foo()需要被再次調用僞代碼。或者,你實際上可能使foo()發電機

def foo(): 
    while need_to_be_called_again(): 
     ... 
     yield True 

for _ in foo(): 
    ... # Do something