学习目标:综合运用前六天所学,编写一个完整的命令行交互式通讯录程序。
-
功能要求:
-
使用字典存储联系人(键为姓名,值为包含多个信息的字典,如电话、邮箱、地址、标签集合)。
-
提供用户菜单:
-
- 添加联系人
-
- 删除联系人
-
- 修改联系人信息
-
- 查询联系人(按姓名精确查询,可选支持模糊查询)
-
- 显示所有联系
-
- 按标签筛选联系人
-
- 退出
-
-
每次操作后给出明确的反馈,并循环显示菜单直到用户选择退出。
-
-
提示:
- 可以用
while True实现主循环。 - 用
if-elif处理菜单选项。 - 对于修改功能,可以先判断联系人是否存在,再选择修改哪个字段。
- 标签管理可以借用集合的便捷性。
- 可以用
扩展挑战(完成后可进一步探索):
- 实现模糊查询时,忽略大小写,且支持按电话、邮箱等字段搜索。
思路
使用while true使代码一直循环,直到输入7.退出操作 使用if elif进行每个选项的区分
源码
print("1.添加联系人")
print("2.删除联系人")
print("3.修改联系人信息")
print("4.查询联系人")
print("5.显示所有联系人")
print("6.按标签筛选联系人")
print("7.退出")
print("——"*10)
contacts={}
while True:
# 添加联系人
num=input("请选择要进行的操作:")
if int(num)>7 or int(num)==0:
print("请输入1~7这几个数字。")
if int(num)==1:
name=input("请输入姓名:")
phone=input("请输入电话号码:")
email=input("请输如电子邮箱:")
address=input("请输入地址:")
relation=input("请输入标签:")
contacts.update({name:{"phone":phone,"email":email,"address":address,"relation":{relation}}})
# print(contacts)
# 删除联系人
elif int(num)==2:
name = input("请输入要删除的联系人:")
if name not in contacts:
print(f"联系人{name}不存在")
continue
contacts.pop(name)
# print(contacts)
# 修改联系人信息
elif int(num)==3:
name = input("请输入修改联系人姓名:")
if name not in contacts:
print(f"联系人{name}不存在")
continue
options=input("请输入要修改的选项:")
new=input(f"请输入新的{options}:")
contacts[name][options]=new
# print(contacts)
# 查询联系人
elif int(num)==4:
shu_name=input("请输入要查询的信息:")
for k,v in contacts.items():
if shu_name in k:
print(f"{k}的联系信息是:{contacts[k]}")
for k1,v1 in v.items():
if shu_name in v1:
print(f"{k}的联系人是:{contacts[k]}")
#显示所有联系人
elif int(num)==5:
for k,v in contacts.items():
print(f"{k}的联系信息是;")
for k1,v1 in v.items():
print(f"{k1}:{v1}")
# 按标签筛选联系人
elif int(num)==6:
biao=input("请输入要查询的标签:")
for k,v in contacts.items():
if biao in v["relation"]:
print(f"{k}:{v}")
elif int(num)==7:
print(contacts)
break