最近在看《简明 Python 教程》,作者在16章留了个问题,通过前面章节的学习,设计一个“
地址簿程序
,
在这个程序中,你可以添加、修改、删除和搜索你的联系人(朋友、家人和同事等等)以及它们的信息(诸如电子邮件地址和/或电话号码)。这些详细信息应该被保存下来以便以后提取“,网上发现已经有很多网友读了
《简明 Python 教程》,并贴出了自己的”杰作“。我也在此班门弄斧,望大家多多指教!
#!/usr/bin/python
#encoding: utf-8
#Filename: member_ver2.py
import cPickle as p
import os
import sys
class Person:
filename = 'address.txt'
addressList = {}
def __init__(self):
if os.path.exists(self.filename):
f = file(self.filename)
self.addressList = p.load(f)
f.close()
def save(self):
f = file(self.filename, 'w')
p.dump(self.addressList, f)
f.close()
print('saved successfully.')
def add(self, name, tel, email, type = 'friend'):
if name in self.addressList.keys():
print('The name is exist')
else:
self.addressList[name] = [tel, email, type]
self.save()
print('Added successfully!')
def modify(self, name, tel, email, types = 'friend'):
if name in self.addressList.keys():
self.addressList[name] = [tel, email, types]
self.save()
print('Modified successfully!')
else:
print('The name is not exists!')
def search(self, name):
if name in self.addressList.keys():
print('Name: %s\t Tel: %s\t email: %s\t types: %s ' % (name, self.addressList[name][0], self.addressList[name][1], self.addressList[name][2]))
else:
print('The name is not exist')
def show(self):
print('Name \t Tel \t Email \t Type')
for name, info in self.addressList.items():
print(name, info[0], info[1], info[2])
def run(self):
while True:
cmd = raw_input('Please input command(add/modify/search/delete/show/quit) ' )
if cmd == 'add':
while True:
name = raw_input('Enter name: ')
if name not in self.addressList.keys():
tel = raw_input('Enter tel: ')
email = raw_input('Enter email: ')
types = raw_input('Enter type(default type is "friend"): ')
if types != '':
self.add(name, tel, email, types)
else:
self.add(name, tel, email)
else:
print('The name you added has exist!')
flag = raw_input('Do you want to continue to add?(y/n)')
if flag == 'y' or flag == 'Y':
continue
break
elif cmd == 'modify':
while True:
name = raw_input('Enter name: ')
if name in self.addressList.keys():
tel = raw_input('Enter tel: ')
email = raw_input('Enter email: ')
types = raw_input('Enter type(default type is "friend"): ')
if tel == '':
tel = self.addressList[name][0]
if email == '':
email = self.addressList[name][1]
if types != '':
self.modify(name, tel, email, types)
else:
self.modify(name,tel,email)
else:
print('The name you modifed is not exist!')
flag = raw_input('Do you want to continue to modify?(y/n)')
if flag == 'y' or flag == 'Y':
continue
break
elif cmd == 'search':
while True:
name = raw_input('Enter name: ')
self.search(name)
flag = raw_input('Do you want to continue to search?(y/n)')
if flag == 'y' or flag == 'Y':
continue
break
elif cmd == 'delete':
while True:
name = raw_input('Enter name: ')
self.delete(name)
flag = raw_input('Do you want to continue to delete?(y/n)')
if flag == 'y' or flag == 'Y':
continue
break
elif cmd == 'show':
self.show()
elif cmd == 'quit' or cmd == 'q':
print('quit')
sys.exit()
else:
print('Wrong command,try again')
if __name__ == '__main__':
per = Person()
per.run()