Python如何实现输入字符串不区分大小写比较 解决单位匹配问题
重量单位输入不区分大小写的实现方法
核心逻辑非常简单:别拿用户输入的原始字符串直接做严格相等比对,先把输入内容统一成同一种大小写格式,再和预设的标准值匹配就行。
你之前尝试给同一个匹配变量反复赋值多个字符串的做法本身就有问题:Python里重复给同一个变量赋值,后面的值会直接覆盖前面的内容,自然只能匹配最后一次赋值的内容,根本达不到多格式识别的效果。而字符串的相等判断是严格逐字符匹配的,大小写不一样就算是不同的字符串,这也是你原来代码只能识别固定格式输入的根本原因。
具体实现步骤
- 拿到用户输入的单位字符串后先做两层预处理:
- 调用
strip()去掉输入首尾的无效字符(比如用户不小心多打的空格、换行),避免因为多打了个空格就被判为无效输入 - 调用
lower()把整个字符串转成全小写(转全大写也可以,只要两边格式统一就行):不管用户输入是kg/KG/Kg/kG,转完之后都会变成统一的kg;同理不管是Lbs/LBS/lbs,转完都是统一的lbs
- 调用
- 把你预设的合法单位值也统一成同一种格式(比如全小写的
kg、lbs),再做相等判断
修改后的可运行代码
weight = int(input("Enter weight: ")) # 对输入的单位做预处理:去首尾空格 + 转全小写 unit = input("Kg or Lbs: ").strip().lower() unit_kg = "kg" unit_lbs = "lbs" if unit == unit_kg: print(weight / 0.45) elif unit == unit_lbs: print(weight * 0.45) else: print("invalid entry")
补充说明
- 这种统一大小写比对的方法,不需要手动穷举所有可能的大小写组合,不管用户输入的大小写顺序是什么,只要字母正确就能被识别,完全覆盖你需要的多格式单位识别需求
- 如果你非要用枚举匹配的写法,也可以把所有合法格式放到集合里判断,比如:
但这种写法需要手动把所有大小写变体列全,很容易漏写某个组合导致识别失效,远不如统一转换格式的方法简洁可靠。valid_kg_units = {"kg", "KG", "Kg", "kG"} valid_lbs_units = {"lbs", "LBS", "Lbs", "lBs"} if unit in valid_kg_units: ...
额外提个你原代码里的小问题:你原来写的预设值
unit2="Lbs"本身就没有统一格式,如果用户输入全小写的lbs,就算不考虑大小写差异也会识别错误,统一格式的时候记得把预设值也对应成一致的格式就行。
内容的提问来源于stack exchange,提问作者Everest
相关产品推荐
相关产品推荐

