题目来自书籍:Python3简明教程
题目描述:创建你自己的命令行地址簿程序。在这个程序中,你可以添加、修改、删除和搜索你的联系人(朋友、家人和同事等等)以及它们的信息(诸如电子邮件地址和/或电话号码)。这些详细信息应该被保存下来以便以后提取。
做着给的思路:建一个类来表示人的信息。用字典来存储人的对象,可以将名字作为其键值。用pickle 模块将对象永久地存在磁盘上。用字典的内置方法实现增加,删除和修改联系人的信息。
代码:
原始链接:http://blog.csdn.net/chenxingzhen001/article/details/8504126
#!usr/bin/python
#coding: utf-8
#Filename:phonebook.py
# 创建你自己的命令行地址簿程序。
# 在这个程序中,你可以添加、修改、删除和搜索你的联系人(朋友、家人和同事等等)以及它们的信息(诸如电子邮件地址和/或电话号码)。这些详细信息应该被保存下来以便以后提取。
# 创建一个类来表示人的信息。
# 用字典来存储人的对象,可以将名字作为其键值。用pickle 模块将对象永久地存在磁盘上。用字典的内置方法实现增加,删除和修改联系人的信息。
import pickle
import sys
import os
filename = 'phonebook.data'
# 创建一个类来表示人的信息
class member:
def __init__(self, name, mail, phone, address):
self.name = name
self.mail = mail
self.phone = phone
self.address = address
# 搜索联系人
def select():
f = file(filename)
contactlist = pickle.load(f)
print(contactlist)
s = input('Please enter the name which you want to select: ')
print(s, ' : ', contactlist[s])
# 添加、修改联系人
def update():
s = input('Please input contactor\'s name, mail, phone, address, for example: elizabeth,test@163.com,135123345678,Beijing Chaoyang district-->')
s1 = s.split(',')
pp = member(s1[0], s1[1], s1[2], s1[3])
f = file(filename)
contactlist = pickle.load(f)
contactlist[pp.name] = pp.mail + ',' + pp.phone+ ',' + pp.address
f = file(filename, 'w')
pickle.dump(contactlist, f)
f.close()
del contactlist
# print the result
f = file(filename)
contactlist = pickle.load(f)
print(contactlist)
# 删除联系人
def delete():
f = file(filename)
contactlist = pickle.load(f)
print(contactlist)
s = input('Please input the person\'s name which you want to delete: ')
# 如果存在该联系人,则删除该联系人。如果不存在,程序出错,需要处理一下。
del contactlist[s]
print(contactlist)
f = file(filename, 'w')
pickle.dump(contactlist, f)
f.close()
del contactlist
def main():
while True:
menu = input('''
1. select
2. add/update
3. delete
x. exit
''')
if menu == '1':
select()
elif menu == '2':
update()
elif menu == '3':
delete()
elif menu == 'x':
sys.exit()
else:
print('Don\'t have this option, please try again!')
if os.path.exists('phonebook.data'):
main()
else:
f = file('phonebook.data', 'w')
contactlist = {'elizabeth' : 'test@163.com,13512345678,Beijing Chaoyang district'}
pickle.dump(contactlist, f)
f.close()
del contactlist
main()