Python字符串包含判断异常:预期True却返回False问题排查
问题分析与解决方案
首先咱们先看你给出的菜单字符串:
menu = "salad, pasta, sandwich, pizza, drinks, dessert, soda, beer"
如果直接运行 'beer' in menu,理论上肯定会返回True,因为'beer'确实是这个字符串的一部分。那你实际得到False,大概率是忽略了这几个细节:
- 大小写不匹配:Python的字符串匹配是大小写敏感的!如果你写的是
'Beer' in menu(首字母大写),那结果必然是False,因为菜单里全是小写的'beer'。 - 拼写错误:检查一下你实际代码里的检查字符串是不是写错了——比如写成了'beers'、'bere'或者其他和'beer'相似的词,或者菜单里的'beer'其实有拼写错误(比如你复制的代码里是对的,但实际写的时候手抖写错了)。
- 变量被意外修改:看看你检查'beer'的代码之前,有没有其他地方修改了
menu变量的值?比如后面不小心重新给menu赋值成了别的字符串,那自然找不到'beer'了。 - 隐藏特殊字符(概率较低):如果菜单里的'beer'前后有你没注意到的制表符、换行符这类特殊字符,也可能影响结果?不过这种情况可以用
repr()函数打印菜单内容来排查,它会显示所有隐藏字符:print("当前menu的原始内容:", repr(menu)) print("beer是否存在:", 'beer' in menu)
内容的提问来源于stack exchange,提问作者brandeeno




