用Python实现简单通讯录
一个简单的通讯录例子
#!/usr/bin/python __author__ = 'fierce' #coding:utf-8 import os #引用os模块 import pickle #应用pickle模块 Path='/home/Person.data' #全局变量,这里是通讯录物理路径 #判断通讯录是否存在,不存在则创建空通讯录 if os.path.exists(Path) == False: #判断通讯录是否存在 f=open((Path),'wb') #以二进制写模式打开通讯录 temp={'total': 0} #局部变量,用于计算通讯录的人数 pickle.dump(temp,f) #将对象temp保存到f中 f.close() #关闭f else: pass #空函数 #添加联系人 def add(): #自定义添加函数 f=open((Path),'rb') #以二进制读模式打开通讯录 a=pickle.load(f) #从f中读取信息为数组的形式 f.close #关闭f b=0 #自定义局部变量 name = input('请输入要添加联系人的姓名:') #获取输入,这里是姓名 for key in a.keys(): #循环key为自定义,a.keys()为从通讯录读出来所有key b+=1 #自定义变量自增 if key==name and b <= a['total']+1: #判断,满足条件执行 print("联系人已存在,添加失败!") break #跳出循环 if b==a['total']+1 and key != name: #判断,满足条件执行 number = input('请输入号码:') #获取输入 information={name : number} #附值 a['total']+=1 #total+1 a.update(information) #更新a对象 f=open((Path),'wb') #以二进制写模式打开通讯录 pickle.dump(a,f) #把a对象写入f f.close() #关闭f print('添加成功') break #跳出循环 #显示所有联系人 def showall(): f = open((Path),'rb') a=pickle.load(f) print("一共有{}个联系人.".format(a['total'])) for key in a.keys(): if key != 'total': print("{""}:{""}".format(key,a[key])) f.close #推出通讯录 def exit(): exec("quit()") #查找 def search(name): f = open((Path),'rb') a=pickle.load(f) b=0 for key in a.keys(): b+=1 if key==name and b<=a['total']+1: print("{}的号码是:{}".format(name,a[key])) break if b==a['total']+1 and key != name: print("联系人不存在") break #删除 def deleate(name): f=open((Path),'rb') a=pickle.load(f) f.close() b=0 for key in a.keys(): b+=1 if key==name and b<=a['total']+1: a.pop(name) a['total']-=1 f=open((Path),'wb') pickle.dump(a,f) f.close() print("删除成功!") break if b==a['total']+1 and key != name: print("联系人不存在!无法删除!") break #修改 def change(): x=input("请输入所要修改的联系人姓名:") f=open((Path),'rb') a=pickle.load(f) f.close() b=0 for key in a.keys(): b+=1 if key==x and b<=a['total']+1: y=input("请输入修改后的号码:") a[key]=y f=open((Path),'wb') pickle.dump(a,f) f.close() print("修改成功!") break if b==a['total']+1 and key != name: print("联系人不存在") break #界面 def point(): print("*****************************") print("显示提示信息:*") print("显示所有联系人:0") print("查找联系人:1") print("添加联系人:2") print("删除联系人:3") print("更改联系人资料:4") print("退出通讯录:5") print("*****************************") point() #主进程 while True: #循环 x=input("请输入您的选择:") #获取输入 if x == 2: #判断输入 add() #调用添加函数 continue #结束本次循环,重新开始下一轮循环 if x == 0: showall() #调用显示全部函数 continue #结束本次循环,重新开始下一轮循环 if x == 5: exit() #调用推出函数 continue #结束本次循环,重新开始下一轮循环 if x == 1: name = input("请输入所要查找的联系人姓名:") search(name) #调用查找函数,需要传一个参数:姓名 continue #结束本次循环,重新开始下一轮循环 if x == 3: name = input("请输入所要删除的联系人姓名:") deleate(name) #调用删除函数,需要传一个参数:姓名 continue #结束本次循环,重新开始下一轮循环 if x == 4: change() #调用修改函数 continue #结束本次循环,重新开始下一轮循环 if x == '*': point() else: print("输入选项不存在,请重新输入!") continue #结束本次循环,重新开始下一轮循环