2016-04-04 13 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

を作ることができますループから抜け出すか、そのままにしておいてください。 –

+0

実際には、関数が暗黙的にループを抜け出すことは非常に混乱する可能性があります。例えば、関数がループ外で呼び出された場合はどうなりますか? –

+0

あなたのコードに深刻な字下げの問題があります。forx∈ran≧(5)forx∈ran≧(5)のループには何が入っていますか?関数定義はその内部にあるのですか? whi≦whileループ? 'px'と' nx'は何ですか? – kdopen

答えて

3

初期コードの明白な問題を回避するには(この記事を読むときにはうまく編集されているかもしれませんが)、このタイプの問題に対する通常のアプローチは、関数が外部を調整するために使用される値を返すようにすることですこうしてループ:ここ

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

while foo(): 
    ... # Do something 

need_to_be_called_again()は単に再度呼び出される必要がある)(のfooか否かを判定するための擬似コードです。また、あなたが実際に値が `true`のか`だった場合は、 `例えば(関数から(` my_value = display_grid() `)いくつかの値をreturn`し、その値に依存する必要がfoo()発電

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

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