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

为什么Python会判断不存在的子串存在于目标字符串中?

问题根本原因

你编写的条件判断"CORE" or "Core" in product存在逻辑错误,Python中逻辑运算符or的优先级低于成员运算符in,且非空字符串的布尔值默认为True,因此该表达式实际的执行逻辑为:

  • 优先判断左侧"CORE"的布尔值,结果为True
  • 逻辑或or属于短路运算符,只要左侧结果为真,就会直接返回真,完全不会执行右侧"Core" in product的判断

因此第一个if分支永远会触发,无论输入的product是什么内容,都会直接返回"CORE",这就是你传入"Casual_Attire"得到错误结果的核心原因。

修复方案

有两种常用的正确写法可供选择:

写法1:补全所有成员判断逻辑

def check_product_group(product: str) -> str:
    if "CORE" in product or "Core" in product:
        return "CORE"
    elif "CASUAL" in product or "Casual" in product:
        return "CASUAL"
    else:
        return ""

写法2:统一大小写后判断(更简洁)

不需要罗列多种大小写格式,统一转换为全大写/全小写后再做子串判断即可:

def check_product_group(product: str) -> str:
    product_upper = product.upper()
    if "CORE" in product_upper:
        return "CORE"
    elif "CASUAL" in product_upper:
        return "CASUAL"
    else:
        return ""

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 12:18:03