我想检查一个变量是否有多个值之一。我不明白为什么or
在这种情况下不起作用。我正在学习一个教程,它给出了示例if (a or b):
,但是当我尝试这样做时,它只会对照第一个值检查变量。我的支票怎么了?
name = raw_input('Please type in your name:')
if len(name) < 5:
print "Your name has fewer than 5 characters"
elif len(name) == 5:
print "Your name has exactly 5 characters"
if name == ("Jesse" or "jesse"):
print "Hey Jesse!"
else:
print "Your name has greater than 5 characters"
上面的表达式测试
"Jesse"
是否计算为True
。如果是,那么表达式将返回它;否则,它将返回"jesse"
。这个表达式相当于写:因为
"Jesse"
是一个非空字符串,所以它将始终计算为True
,并因此返回:这意味着表达式:
基本上等同于写下:
为了解决问题,可以使用^{} operator :
或者,可以用^{} 将
name
的值小写,然后直接与"jesse"
进行比较:是正确的方法。
不过,如果您想使用
or
,那么计算结果为
'Jesse'
,因此在执行if name == ("Jesse" or "jesse")
操作时基本上不测试'jesse'
,因为它只测试与'Jesse'
相等,而不测试'jesse'
,如您所观察到的。如果为真,则
or
运算符返回第一个操作数,否则返回第二个操作数。所以在您的例子中,您的测试相当于if name == "Jesse"
。or
的正确应用是:相关问题 更多 >
编程相关推荐