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

本文深入探讨了|和&在布尔类型及数值运算中的应用,解析了其在条件判断中的优先级问题,并对比了and与or运算符的区别,强调在条件判断时的正确使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

|和&可以用于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,不要混淆。

### Python 中 `or` 运算符的用法 在 Python 中,逻辑运算符 `or` 用于执行布尔操作。当使用 `or` 连接两个表达式,如果第一个表达式的求值结果为真,则返回该表达式的值;否则返回第二个表达式的值[^1]。 #### 基本语法 ```python result = expression_1 or expression_2 ``` 这里是一个简单的例子来展示如何使用 `or`: ```python a = True b = False print(a or b) # 输出: True ``` 在这个例子中,因为变量 `a` 的值为 `True`,所以整个表达式的结果就是 `True`,而不会去评估后面的 `b` 变量。 另一个更复杂的案例涉及字符串其他类型的对象: ```python empty_string = "" non_empty_string = "Hello" result = empty_string or non_empty_string print(result) # 输出: Hello ``` 此代码片段展示了即使 `empty_string` 是一个空串(通常认为是假),由于存在右侧有效的非空字符串,最终输出的是后者的内容。 对于数值类型来说也是一样的道理: ```python zero_value = 0 positive_number = 5 outcome = zero_value or positive_number print(outcome) # 输出: 5 ``` 在这里,整数 `0` 被视为假条件下的值,因此程序继续检查并选择了右边的操作数作为结果。 值得注意的是,在某些情况下可以利用这种行为来进行默认值设置或是简化条件判断语句。 #### 实际应用中的技巧 考虑下面这个场景——获取用户提供的名字,默认名为 'Guest' 如果未提供的话: ```python name = input("Enter your name:") or "Guest" print(f"Welcome, {name}") ``` 这段代码会先尝试读取用户的输入,如果没有收到任何有效输入则自动采用 `"Guest"` 作为默认名称。 #### 结合其他数据结构的例子 也可以将 `or` 应用于列表或其他可迭代对象之间: ```python list_a = [] list_b = ['apple', 'banana'] combined_list = list_a or list_b print(combined_list) # 输出: ['apple', 'banana'] ``` 这表明只要左边为空集合或序列,就会采纳右边的数据项填充到目标位置上。 通过上述说明可以看出,Python 的 `or` 不仅限于单纯的真假比较,还可以灵活应用于多种场合下实现简洁优雅的功能设计。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值