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

如何让Python的match case语句实现大小写不敏感匹配?

实现Python match-case的大小写不敏感匹配

方案1:统一转换输入为小写(最直接)

把输入字符串转成小写,同时将case分支里的匹配值也改成小写,就能消除大小写差异导致的匹配失败问题。

fruits = input("Enter fruit: ").lower()

match fruits:
    case "apple":
        print("Calories: ", 130)
    case "avocado":
        print("Calories: ", 50)
    case "banana":
        print("Calories: ", 110)
    case "cantaloupe":
        print("Calories :", 50)

你之前的问题应该是只转换了输入的大小写,但没修改case分支里的字符串,导致小写的输入和大写的匹配值无法对应,所以运行异常。统一两边的大小写即可解决。

方案2:使用match-case的守卫条件(保留原输入格式)

如果需要保留用户输入的原始格式,不想修改输入字符串,可以在case分支中添加守卫条件,通过if判断实现大小写不敏感匹配。

fruits = input("Enter fruit: ")

match fruits:
    case fruit if fruit.lower() == "Apple".lower():
        print("Calories: ", 130)
    case fruit if fruit.lower() == "Avocado".lower():
        print("Calories: ", 50)
    case fruit if fruit.lower() == "Banana".lower():
        print("Calories: ", 110)
    case fruit if fruit.lower() == "Cantaloupe".lower():
        print("Calories :", 50)

守卫条件会先将输入和目标值都转为小写后再比较,满足条件才执行对应分支,既能实现匹配需求,又能保留输入的原始大小写。

方案3:用字典映射替代match-case(更适合批量维护)

如果后续需要添加更多水果数据,用字典维护热量信息会更高效,同样支持大小写不敏感匹配:

fruit_calories = {
    "apple": 130,
    "avocado": 50,
    "banana": 110,
    "cantaloupe": 50
}

fruits = input("Enter fruit: ").lower()
if fruits in fruit_calories:
    print(f"Calories: {fruit_calories[fruits]}")
else:
    print("Fruit not found")

这种方式代码更简洁,后续新增水果只需在字典中添加键值对即可,无需修改分支逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 14:20:34