1251 字
6 分钟
26.4.15Python作业

省份城市查询与记录系统
第1题
题目:制作一个简易项目能实现省份城市查询与记录。
讲解:字典嵌套+循环控制+条件判断
这道题主要考察以下几个核心知识点:
- 字典嵌套列表:使用字典存储省份和城市的关系,字典的key是省份,value是城市列表
- 无限循环:使用
while True创建持续运行的程序 - 条件判断:根据用户输入选择不同的功能分支
- 字符串操作:使用
split()方法分割输入字符串 - 字典操作:包括查找、添加元素等 解题思路:
- 首先创建一个字典,预置一些省份和城市数据
- 使用
while True循环保持程序运行 - 提供三个功能选项:查询、记录、退出
- 查询功能:先判断是否为省份,再判断是否为城市
- 记录功能:按照”省份-城市”格式添加新数据 限制条件:
- 输入格式必须严格按照要求
- 城市查询时需要遍历所有省份
初始版本代码(存在逻辑Bug):
pro = {"广东": ["深圳", "广州"], "四川": ["成都", "乐山"]}print("="*60)print('省份/城市查询')while True: print("=" * 60) n = (input("请输入要执行功能的数字:\n1-查询 2-记录 3-退出\n")) if n == '1': serch = input("请输入要查询的省份或城市:\n") if serch in pro.keys(): print("=" * 60) print("该省份包含以下城市:\n") for i in pro[serch]: print(i, end=" ") print("\n") else: for p in pro.keys(): if serch in pro[p]: print(f"该城市属于以下省份: \n{p}") print("=" * 60) break else: # ❌ 错误:第一次未找到就直接break并输出错误信息 print("抱歉,未查询到该省份或城市,请手动添加") break elif n == '2': put = input("请按照省份-城市进行输入,如:海南-三亚") put = put.split("-") if put[0] in pro.keys(): pro[put[0]].append(put[1]) else: pro[put[0]]=[put[1]] elif n == '3': print("=" * 60) exit("手动退出") else: print("请重新输入") continue这代码写得有点小瑕疵啊,城市查询的逻辑不够严谨
优化版本(修复城市查询逻辑):
# 创建一个字典,存储省份和对应的城市列表pro = {"广东": ["深圳", "广州"], "四川": ["成都", "乐山"]}
# 打印60个等号作为分隔线print("="*60)
# 打印程序标题print('省份/城市查询')
# 进入无限循环,保持程序持续运行while True: # 打印分隔线 print("=" * 60)
# 提示用户输入功能选项并获取输入 n = input("请输入要执行功能的数字:\n1-查询 2-记录 3-退出\n")
# ========== 功能1:查询 ========== if n == '1': # 提示用户输入要查询的省份或城市名称 serch = input("请输入要查询的省份或城市:\n")
# 判断输入的是否为已存在的省份名称 if serch in pro.keys(): print("=" * 60) print("该省份包含以下城市:\n") # 遍历该省份下的所有城市并打印 for city in pro[serch]: print(city, end=" ") # 不换行输出城市名称 print("\n") # 换行
else: # 如果不是省份,则可能是城市,需要遍历所有省份的城市列表进行查找 found = False # 使用标志位记录是否找到
# 遍历字典中的每一个省份及其对应的城市列表 for province, cities in pro.items(): if serch in cities: # 如果输入的城市存在于当前省份的城市列表中 print(f"该城市属于以下省份: \n{province}") print("=" * 60) found = True # 标记为已找到 break # 找到后立即跳出循环
# 只有当循环结束且 found 仍为 False 时,才表示未查询到任何结果 if not found: print("抱歉,未查询到该省份或城市,请手动添加")
# ========== 功能2:记录/添加 ========== elif n == '2': # 提示用户按照"省份-城市"格式输入数据 put = input("请按照省份-城市进行输入,如:海南-三亚\n")
# 使用split方法按"-"分割字符串,得到省份和城市 put = put.split("-")
# 判断输入的省份是否已存在 if put[0] in pro.keys(): # 如果省份已存在,将新城市添加到该省份的城市列表中 pro[put[0]].append(put[1]) else: # 如果省份不存在,创建新的省份条目并添加城市(注意value必须是列表) pro[put[0]] = [put[1]] print("添加成功!") # 可选:给用户一个反馈
# ========== 功能3:退出 ========== elif n == '3': print("=" * 60) exit("手动退出") # 退出程序并显示退出信息
# ========== 输入无效选项的处理 ========== else: print("输入有误,请重新输入") continue # 继续循环,重新显示菜单26.4.15Python作业
https://mikufans.yuzhiyuan.top/posts/26415python/分享文章
生成精美分享图或复制链接,与更多人分享本文。
继续阅读
最后更新于 ,距今已过 170 天
部分内容可能已过时