2013-09-07 2 views
1

Может кто-нибудь, пожалуйста, помогите мне? Я написал этот код 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!') 

Не имеет значения, что я вводил (например, mitch), он всегда будет печатать «Hoi Tim». Я пробовал один и тот же код с числами и выражениями типа input == 20. В этих случаях он отвечает на мои операторы if. Может ли кто-нибудь объяснить мне, что я делаю неправильно?

ответ

11

if naam == 'Tim' or 'tim' интерпретируется как:

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

Который всегда будет True, потому что bool('tim') is True (строка, которая не является пустым считается True). Итак, у вас есть что-то вроде False or True, которое вернет True (потому что одно из значений - True).

Если вы хотите, чтобы сравнить ввод двух строк, вы должны сделать что-то вроде:

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') 
+0

Кроме того, я думаю, что 'input' включает' \ n' в конце строки. Им нужно будет вызвать '.rstrip()' –

+0

'input()' не включает новую строку. –

+0

Благодарим за отзыв Haidro. Ваше объяснение очень ясное. У меня есть вопрос. Какой из методов вы бы посоветовали и почему? – user2756101

1

Если значения можно сравнить рост, вы можете сделать что-то вроде этого

if naam in ('Tim', 'tim'): 
    print ('Hoi Tim') 
elif naam in ('Mitch', 'mitch'): 
    print ('Hoi Mitch') 
elif naam in ('Tom', 'tom'): 
    print ('Hoi Tom') 
else: 
    print ('Hoi vreemdeling!') 
+0

Благодарим за ответ. Как следует понимать? Это что-то вроде elif naam in (includes)? И могу ли я написать столько вариантов, сколько я хотел бы использовать при использовании? – user2756101

+0

Когда вы используете 'in', вы можете перечислить все параметры в кортеже или в списке python. Если любой из элементов соответствует, он вернет true. – thefourtheye

Смежные вопросы