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语句。有人可以向我解释我做错了什么吗?
答案 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!')