Python中|和&运算符条件判断时常见错误,and、or与|、&的区别

|和&可以用于bool类型,也可以用于数值运算。与and和or运算符一样。

数值计算:

|和&实质就是两个数二进制的或和与运算,最后得到十进制数。

and用于数值计算:如果出现0结果为0,两个非零时结果为第二个数。

or用于数值计算:至少有一个非零数时,结果为第一个非零数,如果两个数都为0,则结果为0。

 

条件判断:

|和&:两边可以是True和False的式子,最后得相应结果。

例如:

print(True|False)  #True

当使用条件运算时这里需要注意,上诉说过,它们实际是位运算,这里注意:|和&的优先级高于==、!=、>=等条件运算符。

例如:

print(((1==1)|(2==1))&(3==3))  #True
print((1==1|2==1)&3==3)     #False
print(1==1 & 2==2)   #False

拿第三个式子来说,看似最后结果为True&True=True,但是因为&优先级更高,所以先运算1&2=0,然后是1==0==2,对于多个连续==符号来说,只有这些数全部相等才会得到True,否则False。可以做这样的示例,将第三个式子最后一个2改为0:

print(1==1 & 2==0)   #False
print(False==0) #True

结果任然为False,说明上式中不是按照从左到右的顺序依次计算==运算。至于为什么布尔类型可以用|和&运算,这个估计是内部进行了支持。

所以综上,在使用条件判断时,最好使用and和or,不要混淆。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值