当前位置:首页>python>Python 实战:5 分钟打造专属通讯录,保存查询全搞定!

Python 实战:5 分钟打造专属通讯录,保存查询全搞定!

  • 2026-10-21 13:27:28
Python 实战:5 分钟打造专属通讯录,保存查询全搞定!

编程就像搭积木,把复杂问题拆解开,就能用简单代码实现实用功能~ 今天就带大家从零开始,用 Python 制作一个能保存、能查询的电话号码簿,再也不怕联系人信息丢失啦!

一、核心原理:字典 —— 通讯录的 "数据容器"📦

想存联系人姓名和电话这种 "成对信息",Python 里的字典是最佳选择!就像现实中的电话簿,"姓名" 是查找钥匙(键 key),"电话" 是对应内容(值 value)。

字典基础用法速览

操作
代码示例
功能说明
创建字典
pb = {"小明":"13800138000", "小红":"13900139000"}
建立姓名 - 电话映射关系
新增联系人
pb["小刚"] = "13700137000"
添加新的键值对
修改电话
pb["小明"] = "13800138001"
覆盖原有键对应的值
删除联系人
del pb["小红"]
通过键删除对应的键值对
查询电话
print(pb["小明"])
通过键获取对应的值
查看所有姓名
print(pb.keys())
显示所有联系人姓名
查看所有电话
print(pb.values())
显示所有联系人电话

💡 小知识点:字典的键(姓名)是唯一的,重复添加会覆盖原有信息;值(电话)可以重复哦~

二、分步实现:从基础到完整通讯录

阶段 1:简易通讯录(仅内存存储)📱

先实现最基础的功能 —— 手动输入联系人,程序运行时能看到所有信息(关闭程序后数据会消失)。

# 简易通讯录:仅内存存储pb = {}  # 定义空字典存储通讯录while True:    name = input("请输入联系人姓名(为空则结束):")    if name.strip() == "":  # 输入为空时退出输入        break    phone = input("请输入联系人电话:")    pb[name] = phone  # 将姓名和电话存入字典print("当前通讯录:", pb)

✨ 运行效果:输入多个联系人后,会打印完整字典,比如 {'小明':'13800138000', '小刚':'13700137000'}

阶段 2:持久化存储(保存到文件)📁

想让数据永久保存?需要把字典写入文件!关键命令:open() 函数(控制文件读写)。

文件打开模式说明

模式
功能
适用场景
"w"
写模式(清空原有内容)
新建文件、覆盖旧数据
"r"
读模式(仅读取内容)
查询文件数据
"r+"
读写模式(保留原有内容)
追加、修改文件数据

带保存功能的通讯录代码

# 通讯录v2:保存到文件file = open("temp.txt", "w")  # 创建/打开文件(写模式)pb = {}  # 定义通讯录字典while True:    name = input("请输入联系人姓名(为空则结束):")    if name.strip() == "":        break    phone = input("请输入联系人电话:")    pb[name] = phonestrpb = str(pb)  # 字典转字符串(文件只能存字符串)file.write(strpb)  # 写入文件file.close()  # 关闭文件(必写!否则数据可能丢失)print("通讯录已保存到文件~")

阶段 3:支持追加功能(避免覆盖旧数据)

用 "r+" 模式打开文件,先读取原有数据,再添加新联系人,最后重新写入文件。

# 通讯录v3:支持追加联系人try:    # 尝试读取已有文件    file = open("temp.txt", "r+")    pb = eval(file.readline())  # 字符串转字典    file.seek(0)  # 指针移到文件开头    file.truncate()  # 清空文件(后续重新写入)except:    # 文件不存在或格式错误时,创建新文件    file = open("temp.txt", "w")    pb = {}# 追加新联系人while True:    name = input("请输入联系人姓名(为空则结束):")    if name.strip() == "":        break    phone = input("请输入联系人电话:")    pb[name] = phone# 保存到文件file.write(str(pb))file.close()print("联系人追加成功!")

阶段 4:查询功能(按姓名查电话)🔍

从文件中读取字典数据,根据输入的姓名匹配对应的电话,用 try-except 捕捉查询错误。

# 通讯录查询功能try:    file = open("temp.txt", "r")  # 读模式打开文件    pb = eval(file.readline())  # 字符串转字典    while True:        name = input("请输入要查询的联系人姓名(为空则结束):")        if name.strip() == "":            break        if name in pb:  # 判断姓名是否在字典中            print(f"✅ {name} 的电话:{pb[name]}")        else:            print(f"❌ 未找到 {name} 的联系人信息")    file.close()except:    print("查询出错!可能是文件不存在或格式错误~")

阶段 5:终极版!多功能整合通讯录

把添加、查询、退出功能整合,做成带菜单的完整程序,小白也能轻松使用~

# 通讯录终极版:添加+查询+退出def add_contact():    """添加联系人"""    try:        file = open("temp.txt", "r+")        pb = eval(file.readline())        file.seek(0)        file.truncate()    except:        file = open("temp.txt", "w")        pb = {}    while True:        name = input("请输入联系人姓名(为空则结束):")        if name.strip() == "":            break        phone = input("请输入联系人电话:")        pb[name] = phone    file.write(str(pb))    file.close()    print("📥 联系人添加成功!")def search_contact():    """查询联系人"""    try:        file = open("temp.txt", "r")        pb = eval(file.readline())        while True:            name = input("请输入要查询的联系人姓名(为空则结束):")            if name.strip() == "":                break            if name in pb:                print(f"✅ {name}:{pb[name]}")            else:                print(f"❌ 未找到 {name} 的信息")        file.close()    except:        print("❌ 无通讯录数据可查询!")def main():    """主程序(菜单界面)"""    while True:        print("\n" + "="*30)        print("|---📱 欢迎进入通讯录程序---|")        print("|---1. 查询联系人资料---|")        print("|---2. 添加新的联系人---|")        print("|---3. 退出通讯录程序---|")        print("="*30)        choice = input("请选择操作(1-3):")        if choice == "1":            search_contact()        elif choice == "2":            add_contact()        elif choice == "3":            print("👋 感谢使用,再见!")            break        else:            print("❌ 无效选择,请输入1-3!")if __name__ == "__main__":    main()

三、趣味拓展:生活中的字典应用场景🌍

除了通讯录,字典还能表示很多成对信息:

  1. 学号 - 姓名:student = {101:"张三", 102:"李四"}
  2. 省份 - 省会:province = {"广东":"广州", "浙江":"杭州"}
  3. 科目 - 成绩:score = {"数学":95, "语文":88}
  4. 单词 - 翻译:dictionary = {"apple":"苹果", "python":"蟒蛇"}

四、常见问题排查🔧

  1. 文件保存后乱码?
    字典转字符串后写入文件,打开后显示类似 {'name':'phone'} 是正常的,程序读取时会自动转换回字典。
  2. 运行报错 "文件不存在"?
    第一次运行查询功能时,若未创建通讯录文件,会报错。先执行 "添加联系人" 功能创建文件即可。
  3. 添加联系人后旧数据消失?
    确保使用 "r+" 模式打开文件,且执行了 file.seek(0) 和 file.truncate() 步骤。

总结

今天我们用 Python 字典 + 文件操作,实现了从简易到完整的通讯录程序,掌握了:

  • 字典的增删改查核心操作
  • 文件读写的不同模式用法
  • try-except 错误处理机制
  • 多函数整合的程序设计思路

试着运行代码,添加自己的联系人,体验编程解决实际问题的乐趣吧!如果想升级功能(比如修改、删除联系人),可以在评论区告诉我哦~ 🚀

最新文章

随机文章