Python布尔表达式仅返回False分支输出的问题求解
故障根因
Python字符串的==判断是严格逐字符完全匹配,大小写差异、首尾附带的空格/换行等不可见字符,都会导致匹配失败。当前代码直接拿原始输入和固定字符串"Tacos"做判断,只要用户输入不是和该字符串完全一致(首字母T大写、后续acos全小写、前后无任何多余字符),就会进入else分支。
修复方法
获取输入后先做标准化预处理,消除多余空白、统一大小写后再做判断,容错性会大幅提升,修正后代码:
print("Hello there!") # strip()移除首尾空格、换行等空白字符,lower()统一转为小写 guess = input("Can you guess my favorite food?").strip().lower() # 判断条件同步使用全小写字符串匹配 if guess == "tacos": print("Tacos are life") else: print("GROSS!") print("Thanks for playing the guessing game!! Go eat TACOS!")
如果需要保留大小写校验规则,仅移除.lower()调用即可,只保留.strip()处理首尾多余空白。
快速调试技巧
后续再遇到类似判断不符合预期的问题,可以在判断前加一行print(repr(guess)),打印输入的原始表示,就能直接看到输入里有没有多余空格、大小写是否符合预期,快速定位差异。
内容的提问来源于stack exchange,提问作者latterdayrudy
相关产品推荐
相关产品推荐

