2016-08-17 7 views
-2

解決策が見つからないというコードに問題があります。私は有効でなければならない質問をお願いしますが、ループはちょうど続き、私に入力させてください。有効な回答を求めるときにループを終了できません

print('Do you want to go to the store or woods?') 

lists = ('woods', 'store') 
while True: 
    answers = input()  
    if answers == 'store': 
     break 
     print('Going to the store...') 
    elif answers == 'woods': 
     break 
     print('Going to the woods...') 
    while lists not in answers: 
     print('That is not a valid answer') 
+2

あなたは 'リストしばらくない答えであることを理解してください答え帽子のサブループ?これは、while while:whileループの最上位に到達しないことを意味します。 – callyalater

+1

こんにちはC9 Fox - あなたはすでにあなたが行った調査と、あなたが見つけたことを教えていただけますか?たとえば、デバッガでコードをステップ実行しようとしましたか?良いスタックオーバーフローの質問は、あなたがすでに "検索と研究"を行ったことを示す必要があります。詳細については、ヘルプセクションの[How To Ask](http://meta.stackexchange.com/help/how-to-ask)ガイドを参照してください。 –

答えて

1

まず、あなたのprint文が到達不能です。詳細はhereです。

#... 
if answers == 'store': 
     print('Going to the store...') 
     break 
    elif answers == 'woods': 
     print('Going to the woods...') 
     break 
#... 

次に、2番目のwhile文は、この方法では意味がありません。入力がstoreまたはwoodsとは異なり、ユーザーに別の試みを与える場合にはあなただけのThat is not a valid answerを印刷したい場合 - その後、あなただけでは、すべてのlistsせず、elseを使用することができます。

print('Do you want to go to the store or woods?') 

# no lists 
while True: 
    answers = input() 
    if answers == 'store': 
     print('Going to the store...') 
     break 
    elif answers == 'woods': 
     print('Going to the woods...') 
     break 
    else: 
     print('That is not a valid answer') 

あなたの代わりにチェックしたい場合は、ユーザーの入力はlistsに遭遇しているかどうか、あなたは裏返しこのinトリックを行う必要があります... ``永遠に、あなたは変更しないことをループ:

print('Do you want to go to the store or woods?') 

lists = ('woods', 'store') 
while True: 
    answers = input() 
    if answers == 'store': 
     print('Going to the store...') 
     break 
    elif answers == 'woods': 
     print('Going to the woods...') 
     break 
    elif answers not in lists: 
     print('That is not a valid answer') 
    else: 
     # some default case, for example sys.exit() (needs sys to be imported) 
+0

これは完璧に働いてくれました。ありがとう! –

+1

@ C9Fox私はこれがあなたを助けてうれしいです!しかし、次回(質問を作成する前に)、あなたのコードを少し調べてみてください。たとえば、 'break'ステートメントや、' while'や 'continue'のように動作する方法について読むことを考えてください。 – light2yellow

+0

私はしようとしますが、ブレークやループなどの情報を見つけるのはとても難しいです。別のコードで別の方法で使用されているからです。 –

2

有効な回答のリストにユーザーの回答がないかどうかを確認する必要があります。あなたがやっていることは、逆のやり方です。これを試してみてください:

if answers not in lists: 
    print('That is not a valid answer') 

あなたはまた、その時点でbreakのどちらかにしたい、またはもう一度プロンプトメッセージを印刷します。

1

はこれを試してみてください:すべての

print('Do you want to go to the store or woods?') 
places = ('woods', 'store') 
while True: 
    answer = input() 
    if answer in places: 
     print ("Going to the {0}...".format(answer)) 
     break 
    else: 
     print('That is not a valid answer') 
+0

素早くシンプルで、私のために働いています... –

+0

私は何を書いているかにかかわらず、有効な答えを得られません。 –

+0

私はこれを私のコンピュータでテストしたところ、動作します。 @ C9Foxあなたが正しい答えを得られないと言ったときにあなたが何を指しているのか分かりません... – callyalater

関連する問題