Python 之 地址簿程序
2016-06-28 18:07
288 查看
最近在看《简明 Python 教程》,作者在16章留了个问题,通过前面章节的学习,设计一个“地址簿程序,在这个程序中,你可以添加、修改、删除和搜索你的联系人(朋友、家人和同事等等)以及它们的信息(诸如电子邮件地址和/或电话号码)。这些详细信息应该被保存下来以便以后提取“,网上发现已经有很多网友读了《简明
Python 教程》,并贴出了自己的”杰作“。我也在此班门弄斧,望大家多多指教!
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()
相关文章推荐
- Python设计足球联赛赛程表程序的思路与简单实现示例
- Python flask中的配置
- python 内嵌函数中,return调用函数的区别
- 详解Python中heapq模块的用法
- python flask中的代码约定
- python flask中的代码约定
- pythong的logging模块
- Python 如何生成矩阵
- python 模拟登陆
- eclipse安装插件的方法,以python为例子
- Python中operator模块的操作符使用示例总结
- python 嵌套list的一些小结
- python基础之异常处理
- 简单的登入验证
- Python哈希查找,构建简单哈希表
- python字符串加密解密
- python MySQLdb连接MySQL数据库报错(2003, "Can't connect to MySQL server on 'localhost' (10061)")解决办法
- Python堆排序
- Python3下不要版本号批量编译.pyc文件
- Python 核心编程笔记_Chapter_3 Note_2 模块结构布局