有人可以帮我这个代码吗?

时间:2013-09-07 02:00:06

标签: python

有人可以帮帮我吗?我编写了这个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语句。有人可以向我解释我做错了什么吗?

2 个答案:

答案 0 :(得分: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')

答案 1 :(得分: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!')