2016-05-16 6 views
0

Guys私はidelifおよびelseステートメントを使用して、非常に基本的なプログラムをPythonで試していました。私は何かが正しくないと感じます。下のコードをチェックしてください。Python If Elseif Else is strange

YourChoice = input(str("Do you want to Continue?(Y/N): ")) 

YourChoiceLower = YourChoice.lower() 

if YourChoiceLower == 'y' or 'yes': 
    print("Yes Block Statement") 
elif YourChoiceLower == 'n' or 'no': 
    print("No Block Statement") 
else: 
    print("Wrong Choice") 

上記のコードを実行すると、Y/Nの質問が表示されます。私はyまたはYesを入力すると、それだけでIfブロック文

を返す。しかし、私はnまたはNoを入力すると、それだけでまだ代わりにElseifまたはElseブロックの実行の

チェックアウト以下の行をIfブロックを実行

>>> Do you want to Continue?(Y/N): Y Yes Block Statement

>>> Do you want to Continue?(Y/N): YeS Yes Block Statement

>>> Do you want to Continue?(Y/N): N Yes Block Statement

>>> Do you want to Continue?(Y/N): nO Yes Block Statement

>>> Do you want to Continue?(Y/N): Somethingelse Yes Block Statement

>>>

いくつかのいずれかを案内してくださいその奇妙な
作業、なぜ私は混乱している、何が起こっているかを私に説明できます私は金曜日

注:-)事前に感謝
を終了します。私はあなたがそれがないと思うよう条件YourChoiceLower == 'y' or 'yes'が動作しないのPython 3.4

答えて

1

を使用しています。 YourChoiceLower == 'y'か、'yes'かどうかをチェックします。最後の部分式、'yes'は意味をなさない。

代わりに条件が

if YourChoiceLower == 'y' or YourChoiceLower == 'yes': 
    ... 

のようにあなたが簡単にインタラクティブセッションで、これを自分でチェックすることができた、YourChoiceLowerの両方のサブ式をチェックする必要がある:

>>> a = 'a' 
>>> a == 'a' or 'b' 
True 

a == 'a'がtrueのため、結果はTrueです。しかし、その後:あなたは、もはやブール結果を得るていない。ここ

>>> a = 'b' 
>>> a == 'a' or 'b' 
'b' 

、代わりに私たちは単なる文字列'b'を取り戻します。これはa == 'a'が偽であるため、orの右側が評価され、結果は'b'となります。

+0

おっと!私は今それを得ました、ありがとうございます:-) – Sundararajan