2017-10-23 18 views
0
Exit=("") 

Exit=str(input("Do you require another service? ")) 
if Exit=="Yes" or "Yeah" or "Y" or "yes": 
    print("Okay") 
elif Exit=="No" or "Nah" or "N" or "no": 
    print("Terminating Program") 
else: 
    print("Terminating Program") 

Exit=Noの場合は、[はい]パスが選択されます。どうして?elif elseが正しい文字列入力を検出しない場合

+0

'Exit ==" Yes "、" Yeah "、" Y "または" yes ":'は常に 'True'に評価され、' Exit '( "Yes"、 "Yeah"、 "Y" yes "):'代わりに( 'elif'条件と同じ) – UnholySheep

答えて

2

最初の論理評価の「うん」それ短絡および返すためです:私はこれを行うことをお勧めします

>>> False or True or True 
True 
>>> False or 'exit' 
'exit' 
>>> bool(False or 'exit') 
True 
>>> 

if Exit.lower() in ('yeah', 'y', 'yes'): 
    print("okay") 
elif Exit.lower() in ('no', 'nah', 'n'): 
    print ("Terminating Program") 
else: 
    print ("Terminating Program") 
0

あなたは、変数かどうかを確認するためにpythonでx in (a, b, c)を使用することができますxは、値a,bまたはのいずれかを含みます。

-1

その簡単に念の最初の文字をチェックするために鈍感な方法

if exit.lower().startswith("y"): 
    print ("OK") 
else: 
    print("adios muchacho") 

既存のコードが動作しない理由としては

if "anything"下記参照True

if some_condition or Trueもあり、常にブールですTrueに関係なく、some_conditionTrueまたはFalse

+1

空文字列のインデックスエラーを防ぐには' .startswith() 'を使うべきです。 –

関連する問題