Python中unit == "L" or "l"条件判断不符合预期的原因是什么?
问题原因解析
核心是Python的逻辑运算符运算规则和表达式优先级导致的判断逻辑不符合预期。
- 首先看你初始代码的判断条件
if unit == "L" or "l"::
Python中比较运算符的优先级高于逻辑运算符or,所以这个条件会被自动拆分为(unit == "L") or ("l")两部分执行。而Python中所有非空字符串的布尔值都为True,也就是说"l"这个部分的判断结果永远是真。不管unit == "L"是否成立,整个or运算的结果都会是True,所以if分支永远会被触发,自然不会走到else的逻辑。 - 再看修改后的判断条件
if unit == "L" or unit == "l"::
这个写法明确拆分了两个判断逻辑,实际运算逻辑为(unit == "L") or (unit == "l"),只有当unit的取值确实是L或者l的时候,整个条件的结果才为True,其他情况都会返回False进入else分支,因此逻辑符合预期。
拓展优化写法
你还可以用更简洁的写法实现大小写兼容的判断,避免写多个or条件:
if unit.lower() == 'l':
调用字符串的lower()方法可以把输入的大写字符统一转为小写,只需要判断一次是否等于l即可。
内容的提问来源于stack exchange,提问作者toothpick
相关产品推荐
相关产品推荐

