为何代码if 3 == 1 or 2: print('A') else: print('B')输出A而非B?
为什么你的Python代码输出是'A'而非'B'?
嘿,这个问题其实是Python里运算符优先级和布尔值判断的常见入门坑,我来一步步给你拆解清楚:
首先,先看你的代码:
if 3 == 1 or 2: print('A') else: print('B')
第一步:运算符优先级决定计算顺序
在Python中,==(相等判断)的优先级比or(逻辑或)更高,所以代码会先计算3 == 1,这个判断的结果是False。
此时原条件表达式就简化成了:
False or 2
第二步:理解Python中or的逻辑规则
Python的or运算符不是像你可能误以为的那样“判断两边的条件是否有一个成立”,而是遵循**“真值判断”**规则:
- 它会从左到右依次检查每个操作数
- 只要遇到第一个真值(非
False、非0、非空值等),就直接返回这个真值 - 如果所有操作数都是假值,才返回最后一个假值
这里的2是一个非零整数,属于真值,所以False or 2的结果是2。
第三步:if条件的判断逻辑
在if语句中,只要条件表达式的结果是真值,就会执行if块的代码。因为2是真值,所以条件成立,自然就打印出了'A'。
补充:如果你想实现的逻辑是“3等于1 或者 3等于2”
那正确的写法应该是明确写出两边的判断:
if 3 == 1 or 3 == 2: print('A') else: print('B')
这样计算出来的条件是False or False,结果为False,就会执行else块打印'B'了。
内容的提问来源于stack exchange,提问作者Zictrox
相关产品推荐
相关产品推荐

