【问题标题】:Multiple boolean operators [duplicate]多个布尔运算符[重复]
【发布时间】:2019-06-26 20:29:21
【问题描述】:

有人可以向我解释一下为什么这段代码返回 True 吗?我完全不明白这个,以我的理解,它应该返回 False。

z = 2
y = 1
x = y < z or z > y and y > z or z < y
print(x)

【问题讨论】:

  • 如果不确定,请使用括号
  • 这个例子在现实生活中也没什么意义,因为y &lt; z or z &gt; y 归结为y &lt; z
  • 为什么你认为它应该返回False

标签: python python-3.x


【解决方案1】:

andor 绑定更多(基于operator precendence)。因此,您的布尔表达式也可以这样表示:

z = 2
y = 1
x = y < z or (z > y and y > z) or z < y
print(x)

很明显,y &lt; zTrue,因为这三个中只有一个需要是 True,所以整个表达式的计算结果为 True

【讨论】:

    【解决方案2】:

    oroperator precedenceand 低,所以y &lt; z or z &gt; y and y &gt; z or z &lt; y 等价于(y &lt; z) or (z &gt; y and y &gt; z) or (z &lt; y),并且由于y &lt; zTrue,因此整个表达式在求值后是True or 操作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-04-01
      • 2012-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-27
      相关资源
      最近更新 更多