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

版权声明:本文为博主编写文章,未经博主允许转载,转载请注明出处: https://blog.csdn.net/qq_39742013/article/details/81988268

|和&可以用于条件判断,也可以用于数值运算。而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从左到右计算。不要认为1==0得到的是0,其实是False,可以做这样的示例,将第三个式子最后一个2改为0:

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

结果任然为false,说明在python中1!=True,0!=False,与C++不同。至于为什么布尔类型可以用|和&运算,这个估计是内部进行了支持。

所以综上,在使用条件判断时,最好使用and和or,因为这两个和C++中的或和与使用方法一致,优先级肯定条件运算更高。

猜你喜欢

转载自blog.csdn.net/qq_39742013/article/details/81988268