You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何代码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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:34:43