本文共 3850 字,大约阅读时间需要 12 分钟。
1.通讯录:保存联系人的信息,提供增加、删除、查询和修改联系人的功能
2.使用Python的数据结构——字典的形式来保存联系人的信息:姓名 电话 邮件 地址 生日
通讯录中所有联系人的信息可以写入文件保存,当然也可以从文件中读取
3.只是巩固近两天学习的基本知识,程序诚然后很多不完善的地方,随着后续学习的深入,逐渐更新
import pickle # Python的标准模块,可以将纯Python对象存储在文件中class Contact: """ 联系人类,保存联系人的信息:包括了姓名、电话、邮件、地址和生日""" total_amount = 0 # 类变量,用于记录当前通讯录的总人数 contacts_dict = {} # 创建空的联系人字典,字典以键值对的形式存储信息 @classmethod def add_contact(cls): """添加联系人""" name = input("请输入添加的联系人姓名:") # input函数可以接受一个字符串作为参数,等待用户输入后将返回用户输入的文本 if name in Contact.contacts_dict: # 运算符in来检查某一键值对是否存在于字典中 print("该联系人已经存在") else: telephone = input("请输入13位电话号码:") email = input("请输入邮件:") address = input("请输入地址:") birthday = input("请输入生日:") label = {"tele": telephone, "email": email, "add": address, "birth": birthday} Contact.contacts_dict[name] = label Contact.total_amount += 1 print("添加成功,当前已有联系人{}人".format(Contact.total_amount)) @classmethod def delete_contact(cls): """根据姓名删除联系人""" name = input("请输入要删除的联系人姓名:") if name in Contact.contacts_dict: del Contact.contacts_dict[name] # del语句用来删除某一键值对 print(Contact.contacts_dict) Contact.total_amount -= 1 print("删除成功,当前已有联系人{}人".format(Contact.total_amount)) else: print("{}人不在通讯录中".format(name)) @classmethod def search_contact(cls): """根据姓名搜索联系人""" name = input("请输入要搜索的联系人姓名:") if name in Contact.contacts_dict: print(Contact.contacts_dict[name]) else: print("{}人不在通讯录中".format(name)) @classmethod def modify_contact(cls): """修改联系人信息,注意,由于name是字典的键,所以name的值不可以修改""" name = input("请输入要修改的联系人姓名:") if name in Contact.contacts_dict: print("修改前:") print(Contact.contacts_dict[name]) modify_tele = input("请输入修改后的电话") modify_email = input("请输入修改后的邮件") modify_address = input("请输入修改后的地址") modify_birth = input("请输入修改后的生日") modify_label = {"tele": modify_tele, "email": modify_email, "add": modify_address, "birth": modify_birth} Contact.contacts_dict[name] = modify_label print("修改后:") print(Contact.contacts_dict[name]) else: print("{}人不在通讯录中".format(name)) @classmethod def write(cls): """将通讯录写入文件""" # 写入的方式打开文件 f = open('contact.txt', 'wb') pickle.dump(Contact.contacts_dict, f) # 关闭文件 f.close() @classmethod def read(cls): file = 'contact.txt' try: # 读的方式打开文件 f = open(file, 'rb') # 拆封 Contact.contacts_dict = pickle.load(f) print("已经保存联系人{}位".format(len(Contact.contacts_dict))) Contact.total_amount += len(Contact.contacts_dict) print(Contact.contacts_dict) # 关闭文件 f.close() except EOFError: print("尚未保存联系人") except FileNotFoundError: f.close()def contact_menu(): print("欢迎来到Leaf通讯录,系统提供以下功能:" "1:添加" "2:删除" "3:修改" "4:搜索" "5:退出")contact_person = Contact()contact_person.read()while True: try: contact_menu() choice = int(input("请选择功能:输入对应的数字")) if choice == 1: # 添加 contact_person.add_contact() elif choice == 2: # 删除 contact_person.delete_contact() elif choice == 3: # 修改 contact_person.modify_contact() elif choice == 4: # 搜索 contact_person.search_contact() elif choice == 5: # 退出 contact_person.write() # 字典中数据重写写到文件中 break else: print("输入不合法,请重新输入") except ValueError: print("请输入相应的数字")
4.增加
5.删除
6.修改
7.搜索