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

为何这段Python代码输出‘yup’?‘z’和‘d’均不在‘bba’中

问题解析

出现这种差异的核心原因是Python运算符优先级和非空字符串的布尔判断规则在起作用:

第一个代码的逻辑陷阱

你写的这段代码:

x = 'bba'
if 'z' or 'd' in x:
    print('yup')
else:
    print('nope')

Python中in运算符的优先级高于or,所以这个条件会被Python拆解为:

if ('z') or ('d' in x):

在Python的布尔判断规则里,所有非空字符串都会被判定为True。'z'是一个非空字符串,因此不管后面的'd' in x结果是什么,整个条件直接为True,自然会执行print('yup')。

第二个代码的正确逻辑

而第二段代码:

x = 'bba'
if 'z' in x:
    print('yup')
else:
    print('nope')

是直接判断'z'是否存在于x中,'z'不在'bba'里,条件为False,所以输出nope,这符合你的预期。

实现目标逻辑的正确写法

如果你想判断'z'或'd'任意一个存在于x中,需要把判断条件写完整:

x = 'bba'
if 'z' in x or 'd' in x:
    print('yup')
else:
    print('nope')

或者用更简洁的方式(适合批量判断多个字符的场景):

x = 'bba'
if any(c in x for c in ['z', 'd']):
    print('yup')
else:
    print('nope')

这两种写法都会正确输出nope,和你预期一致。

内容的提问来源于stack exchange,提问作者Clay Bogusky

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 02:42:35