2016-07-08 6 views
0

で文がこれは私のコードの小さな一部である場合に「ブレーク」にどのようにPythonの

def menu(): 
    choices = ["Create a Scenario", "Load a Database", "Quit"] 
    m1 = eg.choicebox("What would you like to do?", "Greenfly Model Menu", choices) 
    if m1 == "Load a Scenario": 
     dbless = eg.enterbox("What is the name of your database?") 
     if dbless is None: 
      menu() 
     db_name = dbless + ".db" 
     check = os.path.isfile(db_name) 

変数dblessコードがメニューを実行して終了なしになっていなけれ終わる場合は()それが想定しているように機能する。しかし、残りのコードが実行を終了すると、この関数の残りの部分は実行を終了します。機能の残りの部分を実行しないようにするために、とにかくそこにはありますか?

+1

'break'文が唯一のループ内で発行することができます。ここで 'return'ステートメントを使います。 –

+0

多分何かを返そうとしてください。このように: 'return' – sehrob

+1

再帰の代わりにループを使用した場合、問題を解決する良い方法である場合は、'中断 'することができます。 – jonrsharpe

答えて

0

入力がNoneでないまで、それは入力を求められますように、あなたはwhileループを含めることができます。

while dbless is None: 
    menu() 
else: #you can remove the else and unindent the next two lines, but I'm used to do it that way 
    db_name = dbless + ".db" 
    check = os.path.isfile(db_name) 

私はここを参照してください問題は、それがいつまでも入力foを頼むということです。問題がある場合は、その間にattemptのようなものを追加できますが、そうは思わないでしょう。また、関数を再度呼び出すためにコードが実際に機能するかどうかはわかりません...とにかく、試してみてください。

0

breakをループなしの機能の中で考慮する代わりに、returnステートメントを使用してください。

0

ループ外でbreak文を使用しないでください。したがって、return文を使用する必要があります。あなたは2つの方法でそれを行うことができます。

if dbless is None: 
    menu() 
    return 

または

if dbless is None: 
    return menu() 
0

あなたはこれを試すことができますし、それはあなたのロジックと一致するだろう:

def menu(): 
    choices = ["Create a Scenario", "Load a Database", "Quit"] 
    m1 = eg.choicebox("What would you like to do?", "Greenfly Model Menu", choices) 
    if m1 == "Load a Scenario": 
    dbless = eg.enterbox("What is the name of your database?") 
    flag=0 
    while flag<1: 
     if dbless is None: 
      menu() 
      break 
     db_name = dbless + ".db" 
     check = os.path.isfile(db_name) 
     flag+=1