1

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

谢谢你。

4

3 回答 3

6

你可能想要:

if number in (1, 2, 3):
于 2013-09-19T01:18:02.753 回答
3

Python 有布尔值,例如Trueand False也有,例如任何空列表、元组或字典、空字符串0、 和None。真实的价值观与此相反,即任何被定义的东西。

Python对返回真值的第一个元素or 进行求值和短路。

所以,表达式(1 or 2 or 3)将返回1

如果您想与所有元素进行比较,那么您正在寻找in关键字:

if number in (1, 2, 3):
    # Do logic
于 2013-09-19T01:20:12.470 回答
2

运算符在其or左侧和右侧接受两个参数,并执行以下逻辑:

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

因此,1 or 2 or 3is simple 1,因此您的表达式变为:

if number == (1):

如果您实际上是指number == 1 or number == 2 or number == 3, 或number in (1, 2, 3),则需要这么说。

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

于 2013-09-19T01:20:27.667 回答