Python 之 地址簿程序

最近在看《简明 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()


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值