【问题标题】:Bitwise Operator with If Statement and comparison Operators. How does this if statement work?带有 If 语句和比较运算符的位运算符。这个 if 语句是如何工作的?
【发布时间】:2020-07-05 06:35:51
【问题描述】:
a = 2
b = 1
if a == 2 | b == 1:
    print(a, b)

这不会打印 a & b 的值

a = 2
b = 1
if ((a == 2) | (b == 1)):
    print(a, b)

这将打印值

为什么会这样?

【问题讨论】:

  • a = 2 b = 1 if a == 2 or b == 1: print(a, b) 这是你想要的吗?
  • 不,实际上“按位或”运算符的工作方式不同,而“普通或”运算符的工作方式不同。
  • 我对这些概念不太熟悉,谢谢介绍!
  • 别担心,我也是新手

标签: python python-3.x if-statement bitwise-operators


【解决方案1】:

Python 中的运算符== 的优先级低于运算符|。所以:

a == 2 | b == 1

相当于:

a == (2 | b) == 1

这又相当于:

(a == (2 | b)) and ((2 | b) == 1)

鉴于a==2,无论b如何,至少有一个子表达式必须为假。

【讨论】:

    【解决方案2】:

    | 是按位的OR 运算符,它的优先级高于==。所以如果不使用括号,2 | b会在第一个程序的开头执行。

    (2 | b) -> (2 | 1) -> (3)
    

    那么当a==3被选中时,它返回False,因为a=2

    如果你想通过检查 a 和 b 的值来执行语句,我认为你可以在这里使用 or 而不是 |

    【讨论】:

    • 其实anyb的表达式都是假的,只要a!=1
    猜你喜欢
    • 2022-01-09
    • 2015-02-08
    • 2012-05-30
    • 2017-01-03
    • 2014-10-17
    • 1970-01-01
    • 2014-02-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多