我目前是Python的新手,我正在尝试运行几行简单的代码。我无法理解Python如何在 if 语句之后评估此语法。任何解释将不胜感激。
number = int(raw_input("Enter number : "))
if number == (1 or 2 or 3):
print "Match"
else:
print "No match"
只有整数1产生正结果,而包括2和3在内的任何其他数字都会通过 else 分支。条件是否只能说明如下?:
if number == 1 or number == 2 or number == 3:
谢谢。
答案 0 :(得分:6)
你可能想要:
if number in (1, 2, 3):
答案 1 :(得分:3)
Python有布尔值,例如True
和False
,and it also has falsy values,例如任何空列表,元组或字典,空字符串0
和None
。 Truthy值与此相反,即任何已定义的值。
Python在{strong>第一个元素上的or
evaluates and short-circuts,它返回一个真值。
因此,表达式(1 or 2 or 3)
将返回1
。
如果您要与所有元素进行比较,那么您正在寻找in
关键字:
if number in (1, 2, 3):
# Do logic
答案 2 :(得分:2)
or
运算符在其左侧和右侧采用两个参数,并执行以下逻辑:
- 评估左侧的内容。
- 如果它是真值(例如,
bool(x) is True
,所以它不为零,空字符串或None
),则返回并停止。- 否则,评估右侧的东西并返回。
醇>
因此,1 or 2 or 3
只是1
,因此您的表达式变为:
if number == (1):
如果您的意思是number == 1 or number == 2 or number == 3
或number in (1, 2, 3)
,则需要说出来。
(顺便说一句:and
运算符的工作方式相同,但如果左侧是假的,则返回第2步。)