Python if语句多条件错误写法下x=8为何输出yes
Python条件判断
x==3 or 4输出yes的原因 你写的if x==3 or 4:会按照Python的运算符优先级规则被解析为if (x == 3) or (4):,而非你预期的if x ==3 or x ==4。
Python中逻辑或or的运算规则如下:
- 从左到右依次判断每个操作数的布尔真值
- 遇到第一个布尔值为
True的操作数就直接返回该操作数,不会再判断后续内容 - 如果所有操作数布尔值都为
False,返回最后一个操作数
你的代码运算步骤:
- 首先计算左侧的
x == 3:此时x赋值为8,该表达式结果为False - 继续计算
False or 4:非0整数的布尔值为True,所以整个表达式最终返回值为4 - if判断会对表达式返回值做布尔校验,4的布尔值为
True,因此会执行print("yes")的分支
你可以运行以下测试代码验证该逻辑:
x = 8 print(x == 3 or 4) # 输出结果为4 print(bool(4)) # 输出结果为True print(False or 0) # 输出0,对应布尔值为False,此时会走else分支
内容的提问来源于stack exchange,提问作者toothpick
相关产品推荐
相关产品推荐

