3
Join = input('Would you like to join me?')
if Join == 'yes' or 'Yes':
  print("Great," + myName + '!')
else:
  print ("Sorry for asking...")

これが私のコードです。長いです。問題を含むだけです。はいまたはいいえの質問をしていますが、コンソールに到達するまでスムーズに実行されます。何を入力しても、「はい」の出力が得られます。誰か助けてくれませんか?私もelifステートメントを使用しましたが、うまくいきませんでした。

4

4 に答える 4

15
if Join == 'yes' or 'Yes':

これは常に真実です。Python は次のように読み取ります。

if (Join == 'yes') or 'Yes':

空でない文字列であるの後半部分orは常に true であり、true はすべて true であるため、式全体が常に trueorです。

Joinこれは、両方の値を明示的に比較することで修正できます。

if Join == 'yes' or Join == 'Yes':

しかし、この特定のケースでは、これを書くための最良の方法をお勧めします:

if Join.lower() == 'yes':

このように、ユーザーが入力した内容の大文字と小文字は関係ありません。小文字に変換され、小文字の値に対してテストされます。変数をJoin他の場所で使用する場合は、代わりに入力時に小文字にする方が便利な場合があります。

Join = input('Would you like to join me?').lower()
if Join == 'yes':   # etc.

yまたはで始まるものをユーザーが入力できるように、次のように記述することもできますy

Join = input('Would you like to join me?').lower()
if Join.startswith('y'):   # etc.
于 2013-07-30T17:53:35.360 に答える
1

昨日この質問に答えました

使用できます.lower()

Join = input('Would you like to join me?')
if Join.lower() == 'yes':
  print("Great," + myName + '!')
else:
  print ("Sorry for asking...")
于 2013-07-30T17:55:20.420 に答える
0

それはorオペレーターの働き方ではありません。交換:

if Join == 'yes' or 'Yes':

と:

if Join in ['yes', 'Yes']:

そしてそれはあなたが望むことをします。

編集:または、より一般的な目的のために、これを試してください:

if 'yes'.startswith(Join.lower()):

これは、'y'、'Y'、'ye'、'Ye'、'YE' などに一致する必要があります。

于 2013-07-30T17:52:47.787 に答える
0

if ステートメントは実際には次のようになります。

if Join=='yes' or Join =='Yes'

コードにifステートメントを記述する方法により、コードは次のように評価されます。

(if Join == 'yes') or ('Yes'):

('Yes')は true であり、常に true と評価されることに注意してください。

于 2013-07-30T17:55:00.000 に答える