2016-05-19 15 views
0

後に繰り返し機能:python |私はこのような機能を持っていてもブレーク

def loop(): 
    while True: 
     ans=str(input("Do you wish to continue? :")) 
     if ans == "yes": 
      loop() 
     elif ans =="no": 
      break 

これを実行した後は、私が答えると、「いいえ」、私は「いいえ」を複数回に依存しない再入力する必要がありますことに気づきました私は何回「はい」と入力したのですか?例えば、関数の最初の2回が実行されている場合は「はい」を入力し、その後に「いいえ」と入力すると、1回続けて2回続けて3回続けて私が「はい」と入力した回数は、「いいえ」と入力する必要があります。

私は、「はい」を20回入力しても、次回は「いいえ」と入力すると、何度も「続ける」かどうか尋ねられません。つまり、一度だけ「いいえ」と入力すると、プログラム全体が停止するはずです。

+0

これは、 'loop()'を呼び出すためです。どうしてそれをするの?より多くのコードと達成しようとしていることを示すため、代わりに何をすべきか提案することができます。私の推測では、まったく何もする必要はありません、 'if ans ==" no ":break'と言うだけで、' yes'をチェックしません。 –

+0

ユーザがyesまたはno以外の何かを入力した場合、続行したいかどうかを再度尋ねるようにする必要があります。 –

答えて

4

ループを再開していないので、関数自体から関数を呼び出しています。これは、回帰と呼ばれ、breakはそれから抜け出すことはありません。 breakは現在のループから抜け出しますが、ループしている関数の前の状態に戻ります。noになります。も返されます.に何度も応答するまであなたが答えたとおりにyes。次に、noと入力すると、プログラムが停止します。

の代わりに(ループ内にあり、他の何でも継続する)continue(上からループを再開するため)またはpassを使用し、ループの最初からやり直すloop()を使用。または、yesのテストを完全に削除します。ループは終了するまで続行するので、Pythonに明示的に指示を出す必要はありません。

+0

'continue'はループ本体の残りの部分に移動する代わりにもう一度質問します。おそらくあなたは 'パス'を意味します。 –

+0

しかし、ループ本体には何もありません。ループは 'while while'ですので、それは無関係に続行します。 – kindall

+0

私の悪い、私はwhileループをloop()の中に入れようとしていましたが、私は今修正しました –

1

YESと入力すると、関数の別のインスタンスが呼び出されていますが、前のインスタンスがまだ終了していないため、開始されたloop()関数のインスタンスごとにNOと入力する必要があります。

  LOOP() 
    YES  NO 
    LOOP()  BREAK 
YES  NO 
LOOP() BREAK 
... 

「はいブランチ」で、すべてのタイプの新しい関数を呼び出す必要はありません。

def loop(): 
while True: 
    ans=str(input("Do you wish to continue? :")) 
    if ans == "yes": 
     pass 
    elif ans =="no": 
     break 
1

は「なし」以外のものを答えることは、ループが継続するようになりますことを想定。

def loop(): 
    while True: # the while is the actual loop 
     ans=str(input("Do you wish to continue? :")) 
     if ans == "no": 
      break 

def recur_loop(): 
    ans=str(input("Do you wish to continue? :")) 
    if ans == "no": 
     return 
    recur_loop() 
関連する問題