Python函数问题:为何非指定名称输出大写问候而非小写?
问题解决:条件判断逻辑错误导致的分支异常
你的代码问题出在if语句的条件判断上:
if name == "Batman" or "Black Widow":
这个写法的逻辑等价于(name == "Batman") or ("Black Widow"),非空字符串在布尔判断中会被视为True,所以不管name是什么值,这个条件永远为真,导致所有输入都会走大写问候的分支。
修正后的代码方案
方案一:明确每个判断条件
def hello(name): if name == "Batman" or name == "Black Widow": print(f"Hello {name.upper()}") else: print(f"Hello {name.lower()}") hello("Aqua Man") # 输出:Hello aqua man
方案二:用集合包含判断(更适合扩展)
如果后续需要添加更多特殊名称,用集合判断会更简洁高效:
def hello(name): special_names = {"Batman", "Black Widow"} if name in special_names: print(f"Hello {name.upper()}") else: print(f"Hello {name.lower()}") hello("Aqua Man") # 输出:Hello aqua man
两种方案都能正确区分特殊名称和普通名称,传入"Aqua Man"时会输出小写格式的问候。
内容的提问来源于stack exchange,提问作者Minho
相关产品推荐
相关产品推荐

