题目来自书籍: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()

用python创建你自己的命令行地址簿程序相关推荐

  1. 用Python做命令行地址簿

    用Python做命令行地址簿 阅读<简明Python教程>有一段时间了,书里提出一个小练习,实现了下. 问题:命令行地址簿程序,可以用来浏览.添加.编辑.删除联系人,需要有邮件地址.电话号 ...

  2. 使用python创建一个windows桌面在线翻译小程序

    1.首先需要制造打包的gui界面 这里小编使用的是 wxFormBuilder 下载地址:链接:https://pan.baidu.com/s/1DOe7TA6ap07ZsjcH4qzBIQ 密码:2 ...

  3. python创建员工_python作业员工信息表程序(第四周)

    #!/usr/bin/env python#-*- coding:utf-8 -*-#Author: Colin Yao """python 员工信息表操作"& ...

  4. python做bi系统_如何使用Python创建可视化对象

    早前,Power BI就已经支持使用Python创建可视化对象了,当你遇到自定义程度较高的可视化对象时,Python就大大的派上了用场:那么我们如何使用呢?接下来小悦就为各位伙伴们介绍一下吧~ 首先, ...

  5. python常用命令汇总-python数据分析之pandas常用命令整理

    原标题:python数据分析之pandas常用命令整理 pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的.Pandas 纳入了大量库和一些标准的数据模型 ,提供了高效地 ...

  6. python常用命令汇总-Python爬虫框架Scrapy常用命令总结

    本文实例讲述了Python爬虫框架Scrapy常用命令.分享给大家供大家参考,具体如下: 在Scrapy中,工具命令分为两种,一种为全局命令,一种为项目命令. 全局命令不需要依靠Scrapy项目就可以 ...

  7. python创建打开文件-Python文件处理:创建、打开、追加、

    在Python中,不需要导入外部库来读取和写入文件.Python为创建.写入和读取文件提供了内置的函数. 在本文中,我们将学习 如何创建文本文件 使用Python,您可以通过使用代码创建一个.文本文件 ...

  8. python创建一个类初始化两个变量name、age_Python小白入门:第八讲||类

    Python 是一种面向对象的编程语言.在面向对象编程中,你编写表示现实世界中的事务和情景的类,并基于这些类来创建对象. 编写类时,你定义的一大类对象都有的通用行为.基于类创建对象时,每个对象都自动具 ...

  9. 用python创建微信机器人_用Python创建微信机器人

    原标题:用Python创建微信机器人 文/裸睡的猪哥 图片来源于网络 微信,一个日活10亿的超级app,不仅在国内社交独领风骚,在国外社交也同样占有一席之地.今天我们要讲的便是如何用Python来做一 ...

最新文章

  1. vue-cli 使用小技巧
  2. centos7.3网络实验环境(金个人)
  3. 基于springboot实现疫情数据统计系统
  4. 机器学习算法基础——决策树和随机深林
  5. 面试题整理 8 字符串排序扩展题
  6. matplotlib xticks 基于 旋转_咬文嚼字——对matplotlib的文字绘图总结
  7. 计算机指令称,通俗解释什么叫计算机指令?
  8. 解决Establishing SSL connection without servers identity verification is not recommended问题
  9. Git初学札记(一)————Git简介与安装
  10. noi.ac #543 商店
  11. 3-7:常见任务和主要工具之文本处理
  12. 总结C++中取成员函数地址的几种方法
  13. bat文件打开cmd并且运行cmd命令
  14. Android多国语言包
  15. 最小项标准式和卡诺图化简
  16. Mac 忘记管理员名和密码
  17. FPGA与ASIC区别
  18. 手机RAM、ROM和储存卡的那些事
  19. 腾讯云快速增长背后 三大短板仍需补足
  20. Mac下使用Eclipse读java源码

热门文章

  1. Java简单投票系统
  2. P-Link ARM Cortex-M脱机编程器开源前的一些准备工作----第四章 几个重要的结构体介绍
  3. vue 路由跳转返回上一级
  4. app后端设计(3)--短信,邮件,推送服务(2014.12.05更新)
  5. 一行代码实现IOS 3DES加密解密
  6. multi-kernels、ALLOC与USE、Zero-Copy
  7. ionic3应该善用组件和指令 (实用、赞)
  8. ​12864无字库液晶显示(一)
  9. js设计模式——组合模式
  10. 基于java实现的分词以及词频统计,准备制作词云数据