Python通讯录添加邮箱功能无报错但未生效问题排查
问题原因及修复方案
核心原因
添加邮箱时,姓名未做与查询逻辑一致的格式化处理,导致字典中存储的键格式和查询时使用的键格式不匹配,看起来像是没添加成功,实际是键的大小写格式不一致导致查询不到。
具体细节:
- 查询邮箱时,输入的姓名会经过
.lower().capitalize()处理(比如输入"bob"会转为"Bob"),程序会去字典中查找键为"Bob"的条目。 - 但添加姓名时,直接保存了用户输入的原始内容(比如用户输入
"bob",字典里的键就是"bob"),后续用"Bob"查询自然找不到,误以为添加失败。
修复方法
修改添加姓名的代码,对输入的姓名做同样的格式化处理:
name = input("Please type the name: ").lower().capitalize()
额外代码问题(不影响添加功能,但建议修复)
代码中有一行无效的判断逻辑:
elif email_numb != {'Email', 'Phone', "M"} :
这里是把字符串和集合做不等于比较,永远为True(除非用户输入的是字符串"{'Email', 'Phone', 'M'}"),会导致输入"Q"时,先触发这个分支的错误提示,再执行break。建议改成:
elif email_numb not in {'Email', 'Phone', "M", "Q"} :
内容的提问来源于stack exchange,提问作者Aharon Becker
相关产品推荐
相关产品推荐

