1251 字
6 分钟
26.4.15Python作业

省份城市查询与记录系统#

第1题#

题目:制作一个简易项目能实现省份城市查询与记录。#

讲解:字典嵌套+循环控制+条件判断#

这道题主要考察以下几个核心知识点:

  1. 字典嵌套列表:使用字典存储省份和城市的关系,字典的key是省份,value是城市列表
  2. 无限循环:使用while True创建持续运行的程序
  3. 条件判断:根据用户输入选择不同的功能分支
  4. 字符串操作:使用split()方法分割输入字符串
  5. 字典操作:包括查找、添加元素等 解题思路:
  • 首先创建一个字典,预置一些省份和城市数据
  • 使用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/
作者
遇缘
发布于
2026-04-17
许可协议
CC BY-NC-SA 4.0

分享文章

生成精美分享图或复制链接,与更多人分享本文。

继续阅读

沿着主题读

基于共同的标签与分类

换条路线

从其他文章中稳定抽取

最后更新于 ,距今已过 170 天

部分内容可能已过时