要求:
编写一个简单的通讯录
1、通讯录包含至少包含姓名、电话号码、电子邮箱;2、通讯录的信息能够保存在本地磁盘;3、通讯录查找特定人员的信息;4、通讯录能够修改特定人员的信息;5、通讯录能够删除特定人员的信息;6、通讯录能完全显示所有人的信息
方法:Python 2.7.9 / Windows
1 # -*- coding: gbk -*-
2
3 import os,sys
4 import cPickle as p
5
6 #判断通讯录是否存在,不存在则创建通讯录
7 if os.path.exists('contacts.dat')==False:
8 f = file('contacts.dat','wb')
9 temp = {'total':0}
10 p.dump(temp,f)
11 f.close()
12 print "\n本地磁盘尚无通讯录,新通讯录创建成功!\n"
13 else:
14 pass
15
16 #添加联系人
17 def add():
18 f = file('contacts.dat','rb')
19 a = p.load(f)
20 f.close()
21 name = raw_input('请输入所要添加联系人的姓名:')
22 if a.has_key(name):
23 print "\n联系人已存在,添加失败!请改名~"
24 else:
25 tel = raw_input('请输入电话号码:')
26 email = raw_input('请输入所要添加联系人的电子邮件(example@example.com):')
27 list = [tel,email]
28 information = {name:list}
29 a['total'] += 1
30 a.update(information)
31 f = file('contacts.dat','wb')
32 p.dump(a,f)
33 f.close()
34 print '添加成功!'
35
36 #显示所以联系人
37 def showall():
38 f = file('contacts.dat','rb')
39 a = p.load(f)
40 print "一共有{}个联系人.\n".format(a['total'])
41 print "{:<8}\t{:<15}\t{:<30}".format('姓名','电话号码','电子邮箱')
42 for key in a.keys():
43 if key != 'total':
44 print "{:<8}\t{:<15}\t{:<30}".format(key,a[key][0],a[key][1])
45 f.close()
46
47 #退出通讯录
48 def exit():
49 sys.exit()
50
51 #查找
52 def search(name):
53 f = file('contacts.dat','rb')
54 a = p.load(f)
55 if a.has_key(name):
56 print "{}的号码是:{}".format(name,a[name][0])
57 print "{}的电子邮箱是:s{}".format(name,a[name][1])
58 else:
59 print "联系人不存在!"
60 f.close()
61
62 #删除
63 def delete(name):
64 f = file('contacts.dat','rb')
65 a = p.load(f)
66 f.close()
67 if a.has_key(name):
68 a.pop(name)
69 a['total'] -= 1
70 f = file('contacts.dat','wb')
71 p.dump(a,f)
72 f.close()
73 print "删除成功!"
74 else:
75 print "联系人不存在!无法删除!"
76
77 #修改
78 def modify(name):
79 f = file('contacts.dat','rb')
80 a = p.load(f)
81 f.close()
82 if a.has_key(name):
83 tel = raw_input("请输入修改后的号码:")
84 a[name][0] = tel
85 email = raw_input("请输入修改后的邮箱:")
86 a[name][1] = email
87 f = file('contacts.dat','wb')
88 p.dump(a,f)
89 f.close()
90 print "修改成功!"
91 else:
92 print "联系人不存在!"
93
94 #界面
95 def menu():
96 print
97 print "****************************"
98 print " 显示菜单提示信息:*"
99 print " 显示所有联系人:0"
100 print " 查找联系人:1"
101 print " 添加联系人:2"
102 print " 删除联系人:3"
103 print " 更改联系人资料:4"
104 print " 退出通讯录:5"
105 print "****************************"
106
107 #主程序
108 while True:
109 menu()
110 x=raw_input("\n请输入您的选择菜单号:")
111 if x == '2':
112 add()
113 continue
114 if x == '0':
115 showall()
116 continue
117 if x == '5':
118 print "谢谢使用!"
119 exit()
120 continue
121 if x == '1':
122 name = raw_input("请输入所要查找的联系人姓名:")
123 search(name)
124 continue
125 if x == '3':
126 name = raw_input("请输入所要删除的联系人姓名:")
127 delete(name)
128 continue
129 if x == '4':
130 name = raw_input("请输入所要修改的联系人姓名:")
131 modify(name)
132 continue
133 if x == '*':
134 menu()
135 else:
136 print "输入的选项不存在,请重新输入!"
137 continue
结果:
>>>
****************************
显示菜单提示信息:*
显示所有联系人:0
查找联系人:1
添加联系人:2
删除联系人:3
更改联系人资料:4
退出通讯录:5
****************************
其余功能显示正常。
说明:Windows平台下,开头声明# -*- coding: gbk -*-显示中文正常