布尔运算符如何在'if'条件下工作?

时间:2013-09-19 01:15:14

标签: python if-statement boolean operators

我目前是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:

谢谢。

3 个答案:

答案 0 :(得分:6)

你可能想要:

if number in (1, 2, 3):

答案 1 :(得分:3)

Python有布尔值,例如TrueFalseand it also has falsy values,例如任何空列表,元组或字典,空字符串0None。 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运算符在其左侧和右侧采用两个参数,并执行以下逻辑:

  
      
  1. 评估左侧的内容。
  2.   
  3. 如果它是真值(例如,bool(x) is True,所以它不为零,空字符串或None),则返回并停止。
  4.   
  5. 否则,评估右侧的东西并返回。
  6.   

因此,1 or 2 or 3只是1,因此您的表达式变为:

if number == (1):

如果您的意思是number == 1 or number == 2 or number == 3number in (1, 2, 3),则需要说出来。

(顺便说一句:and运算符的工作方式相同,但如果左侧是假的,则返回第2步。)