2

誰か助けてくれませんか?この python コードを書きましたが、何らかの理由で if ステートメントと elif ステートメントに正しく応答しません。

print ('Welkom')
print("\n")

naam = input('Typ alsjeblieft je naam en druk vervolgens op enter: ')
print("\n")

if naam == 'Tim' or 'tim':
    print ('Hoi Tim')
elif naam == 'Mitch' or 'mitch':
    print ('Hoi Mitch')
elif naam == 'Tom' or 'tom':
    print ('Hoi Tom')
else:
    print ('Hoi vreemdeling!')

何を入力しても(ミッチなど)、常に「Hoi Tim」と出力されます。input == 20 のような数値と式を使用して同じコードを試しました。これらの場合、if ステートメントに応答します。誰かが私が間違っていることを説明してもらえますか?

4

2 に答える 2

12

if naam == 'Tim' or 'tim'次のように解釈されます。

if (naam == 'Tim') or ('tim')

(空でない文字列は True と見なされるTrueため)、これは常に になります。bool('tim') is TrueのようなものFalse or Trueが返されTrueます (値の 1 つが True であるため)。

入力を 2 つの文字列と比較したい場合は、次のようにする必要があります。

if naam == 'Tim' or naam ==  'tim':

または:

if name in ('Tim', 'tim'):

ただし、あなたの例では、次を使用できますstr.lower()

if naam.lower() == 'tim':

これはあなたの他のものと同じです:

elif naam.lower() == 'mitch':
    print('Hoi Mitch')
elif naam.lower() == 'tom':
    print('Hoi Tom')
于 2013-09-07T02:01:00.707 に答える