【问题标题】:Strange Logic Behavior with Variable and Number变量和数字的奇怪逻辑行为
【发布时间】:2016-08-22 20:37:04
【问题描述】:

假设我将ab 定义如下:

a = 1
b = 1

然后我测试:

a == 1
#True

5>4
#True

a==1 & b==1
#True

5>4 & 4>3
#True

a==1 & 5>4
#False

最后一个是怎么回事?我希望能够测试最后一个不等式并得到True 的结果。

【问题讨论】:

标签: python logic boolean-logic inequality


【解决方案1】:

在 Python 中,& 用于数字位运算,而不是逻辑。请改用andor

【讨论】:

  • 在最后一个示例中,& 运算符优先于 == 运算符。因此首先对其进行评估,如下所示:a == (1 & 5) > 4。然后将a == 1 > 5 转换为int(True) > 5,即False
【解决方案2】:

与 C 不同,Python 中的所有比较操作都具有相同的优先级,低于任何算术、移位或按位操作。同样与 C 不同的是,像 a

这意味着:

a==1 & 5>4 is equal to 
a == ( 1 % 5 ) > 4
a == 1 > 4
True > 4

False

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-13
    • 1970-01-01
    • 2011-12-05
    • 2019-09-06
    • 2021-10-27
    • 2014-06-05
    • 2017-08-06
    相关资源
    最近更新 更多