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!')

不管我输入什么(比如mitch),它都会打印出'Hoi Tim'。我用数字和表达式(如 input == 20)尝试了相同的代码。在这些情况下,它确实响应了我的 if 语句。有人可以向我解释我做错了什么吗?

4

2 回答 2

12

if naam == 'Tim' or 'tim'被解释为:

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

这将永远是True,因为bool('tim') is 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')
于 2013-09-07T02:01:00.707 回答
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!')
于 2013-09-07T02:41:30.237 回答