【问题标题】:python XOR for two integerspython XOR 两个整数
【发布时间】:2014-09-25 13:43:48
【问题描述】:

从 Java 背景进入 Python 并通过 CodingBat (Python > Warmup-1 > pos_neg) 使我感到困惑大大:

    >>> True ^ False 
    True 
    >>> 1<0 ^ -1<0 
    False 

我很欣赏以下内容:

    >>> (1<0) ^ (-1<0)
    True

但是 python 将 1&lt;0 ^ -1&lt;0 解释为返回 false 是什么?

【问题讨论】:

  • 因为它将1&lt;0 ^ -1&lt;0评估为1&lt;(0 ^ -1)&lt;0,即1 &lt; -1 &lt; 0,即(1 &lt; -1) and (-1 &lt; 0),显然False。了解您的运算符优先级!

标签: python xor


【解决方案1】:

^higher precedence 具有 &lt;

因此,正在评估的实际上是1 &lt; -1 &lt; 0,其中0 ^ -1 = -1

因此您正确地得到False,因为不等式显然不成立。

您几乎不需要记住优先级表。只需巧妙地使用括号即可。

您可能还想查看this,它讨论了相同的情况。

【讨论】:

    【解决方案2】:

    0 ^ -1 等于 -11 &lt; -1 &lt; 0False,因为 1 大于 -1。 Python 很自然地链接了关系运算符,因此1 &lt; -1 &lt; 0 等价于(1 &lt; -1) and (-1 &lt; 0)

    【讨论】:

      猜你喜欢
      • 2014-01-25
      • 2021-12-05
      • 1970-01-01
      • 2014-05-22
      • 2012-12-24
      • 1970-01-01
      • 1970-01-01
      • 2014-06-04
      • 2015-02-28
      相关资源
      最近更新 更多