【问题标题】:Python comparison weirdness [duplicate]Python比较怪异[重复]
【发布时间】:2021-11-18 17:47:49
【问题描述】:

我有一个对象,我需要比较它的一些属性,但我无法解释发生了什么,但以下是我的 VS 代码调试器的输出(我在每个输出之前添加了 '=')

(0 > 55000 | 150 > 280)
=False # expected
250>150
=True # expected
True & False 
=False # expected
(250>150 & (0 > 55000 | 150 > 280))
=True # what????

【问题讨论】:

  • 布尔或是or,而不是|
  • and& 相同。
  • (如果你习惯 NumPy 和 Pandas 使用 |&,那是因为 orand 由于短路问题是不可重载的。)

标签: python boolean-operations


【解决方案1】:

对于数字,& 是“按位与”,| 是“按位或”。这些运算符的优先级高于>< 等比较运算符。

150 & (0 > 55000 | 150 > 280) == 150 & 0 == 0 那么150>0 就是True

【讨论】:

    【解决方案2】:

    您正在使用 binary bitwise operators &|。 你应该使用boolean operatorsandor

    【讨论】:

      【解决方案3】:

      |和 & 是位运算符。位运算符比比较运算符具有更高的优先级。你应该改变'|'到“或”和“&”到“和”

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-01-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-20
        相关资源
        最近更新 更多