要求:
編寫一個簡單的通訊錄
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 -*-顯示中文正常
本來網上查詢中文亂碼問題,應該是使用# -*- coding: utf-8 -*-的開頭聲明,后發現這個聲明不管用,后改用gbk起作用。
更深入的內容有待后續研究,歡迎大家討論!
源自:DuShuSir.com
