Python如何根据用户输入从字典中查询并输出指定邮编对应的城市
问题原因
- 原代码没有使用用户输入的邮政编码做匹配判断,反而遍历了整个字典的所有键值对,会输出所有存储的邮编和城市信息
- 循环内的判断
if x in countyzips永远成立(x是字典本身的键),永远不会触发不存在的分支逻辑 - 缩进存在语法错误,
for循环前的多余缩进会导致运行时报错 - 输出内容不符合需求格式,错误使用字典内的键而非用户输入的内容
修正后可直接运行的代码
# 邮编字典示例 countyzips = {'90210': 'Beverly Hills', '90001' : 'Los Angeles'} # 获取用户输入,自动去除首尾空格避免匹配异常 user_input_zip = input('enter zip code:').strip() # 直接判断输入是否在字典的键中,无需遍历 if user_input_zip in countyzips: print(f'zip code = {user_input_zip} , city = {countyzips[user_input_zip]}') else: print(f'zip code {user_input_zip} is not in Los Angeles County')
优化说明
- 直接利用字典的
in判断特性完成键存在性校验,时间复杂度为O(1),比遍历字典效率高很多 - 避免使用
zip作为变量名(zip是Python内置函数),改用无冲突的变量名user_input_zip - 增加输入首尾空格自动清理逻辑,兼容用户误输入空格的场景
- 输出格式完全匹配需求要求
内容的提问来源于stack exchange,提问作者MVP
相关产品推荐
相关产品推荐

