我是python的新手.我使用以下代码测试了我的解释器,
In [1]: 2 and 3
Out[1]: 3
In [2]: 3 and 2
Out[2]: 2
In [3]: 3 or 2
Out[3]: 3
In [4]: 2 or 3
Out[4]: 2
Run Code Online (Sandbox Code Playgroud)
在上面,拿2=0010和3=0011.结果是,
+ 0010
0011
----
0010=2
Run Code Online (Sandbox Code Playgroud)
但Out[1]给了3(不完全)并out[2]给了2(确切).
两种情况有什么区别?
Mar*_*ers 10
您正在使用布尔逻辑or和and短路(返回操作符结果固定的第一个操作数).
您正在寻找二进制位运算符,|并且&:
>>> 0b10 & 0b1
0
>>> 0b10 | 0b1
3
Run Code Online (Sandbox Code Playgroud)
如果or操作数为true-y(非空或数字0),则运算and符返回第一个操作数,否则操作符返回第一个操作数,如果是false-y则返回第一个操作数,否则返回第二个操作数.这就是为什么你看到3 and 2返回2,并3 or 2返回3.无论2和3不为零,在布尔环境如此真实.
使用0虚假值你会看到:
>>> 3 and 0
0
>>> 3 or 0
3
>>> 0 and 3
0
>>> 0 or 3
3
Run Code Online (Sandbox Code Playgroud)
小智 6
您正在寻找按位运算符,
>>> 2 & 3
2
>>> 2 | 3
3
Run Code Online (Sandbox Code Playgroud)
通过刚刚进行2 and 3评估2,True然后3(也True),Python返回第二个数字.所以你得到了3.
随着2 or 3,它出现短路,只是返回2自2IS True.
| 归档时间: |
|
| 查看次数: |
419 次 |
| 最近记录: |