2016-12-19 16 views
1

何らかの理由により、私のプログラムは、ユーザーの回答にかかわらずダイスを再び回転させ続け、さよならメッセージを印刷しません。プログラムのあなた自身をテストすることができますので、私は以下のコードが含まれます私のプログラムはなぜこのようなことをしていますか?

(Pythonの3)

from random import randint 

def rollthedice(): 
    print("The number you rolled was: "+ str(randint(1,6))) 

rollthedice() 

shouldwecontinue = input("Do you wish to roll again? (y or n) ").lower() 

if shouldwecontinue == "y" or "yes": 
    rollthedice() 

elif shouldwecontinue == "n" or "no": 
    print("Goodbye.") 

elif shouldwecontinue != type(str): 
    print("Sorry the program only accepts 'y' or 'n' as a response.") 

所望の効果は、ユーザーがyと入力した場合、それはそれぞれの開始、もう一度サイコロを振りということでなければなりませんプログラム全体を再び一方、ユーザーがnoを入力すると、Goodbyeメッセージが表示されます。

+1

ほとんど毎日このような間違いがありますが、これは非常に一般的です。代わりに '' shouldwecontinue in( "y"、 "yes"): 'を使用してください。 –

+1

@PaulRooney - ほぼ毎日?一日に複数回のように。 >。> – TigerhawkT3

+0

そしてOPでは、サイト上のすべての質問に技術的には適用できない質問タイトルを考えているかもしれません。マニュアルのトラブルシューティングのセクションを読んでいた場合、目次に「何かが間違っていて、それを修正したい」と書かれた20個の同一のエントリがある場合、どのように役立つでしょうか? – TigerhawkT3

答えて

3

orはそのようには機能しません。あなたのプログラムは(shouldwecontinue == "y") or "yes"を評価しており、Pythonは"yes"をtruthyと解釈するので、その条件は常に成功します。最も簡単な修正は、shouldwecontinue == "y" or shouldwecontinue == "yes"に変更することです。もちろん、他の条件式についても同様の変更が行われます。

+0

ああ、私はそれを監督するとは信じられません。ありがとう! –

+1

...またはそれ以上のPythonの 'もし'( "y"、 "yes")の中でshouldwecontinue: ' –

+0

@LeeDanielCrocker、あるいは' {"y"、 "yes"}: 'のshouldwecontinue。そして、ええ、それは本当に重要ではありません:-) –

関連する問題