侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

Python实现命令行通讯录实例教程

Python  /  管理员 发布于 7年前   155

1、实现目标

编写一个命令行通讯录程序,可以添加、查询、删除通讯录好友及电话

2、实现方法

创建一个类来表示一个人的信息。使用字典存储每个人的对象,名字作为键。
使用pickle模块永久地把这些对象存储下来。
使用字典内建的方法添加、删除修改人员信息。

3、思维导图

4、编写伪代码

# 1.创建字典用来存储通讯录信息# 2.创建人员类,包含姓名、关系、电话三个属性# 3.创建操作类,包含增加、查询、删除人员,退出,保存并退出五个方法# 4.程序运行# 5.判断通讯录文件是否存在# 6.如果存在,将文件读取到personDictionary字典中# 7.如果不存在,提示并创建# 8.while循环等待读取指令  # 9.如果指令为addperson,添加通讯录人员  # 10.如果指令为delperson,删除通讯录人员  # 11.如果指令为search,查找通讯录人员  # 12.如果指令为quit,不保存退出程序  # 13.如果指令为sq,保存更改并退出程序

5、根据伪代码编写代码

import pickle as pimport os# 1.创建字典用来存储通讯录信息personDictionary= {'name':{'relationship':'','tel':''}}relationshipList=['家人','朋友','同事']# 2.创建人员类,包含姓名、关系、电话三个属性class Person:  def __init__(self,name,relationship= relationshipList[1],tel='None'):    personDictionary[name]= {'relationship':relationship,'tel':tel}# 3.创建操作类,包含增加、查询、删除人员,退出,保存并退出五个方法class Operation:  def Addperson():    addname= input('请输入姓名:')    addrelationship= int(input('请选择分组(0:家人,1:朋友,2:同事):'))    addtel= input('请输入电话:')    Person(addname,relationshipList[addrelationship],addtel)  def Delperson():    name= input('请输入要删除的联系人姓名:')    del personDictionary[name]  def Search():    name= input('请输入要查找的联系人的姓名:')    if name in personDictionary:      print('姓名:%s,关系:%s,电话:%s' %(name,personDictionary[name]['relationship'],personDictionary[name]['tel']))    else:      print('联系人不存在。')  def Quit():    running= False  def SaveQuit():    f= open(addressbookFile,'wb')    p.dump(personDictionary,f)    f.close()    running= False# 4.程序运行running= True# 5.判断通讯录文件是否存在addressbookFile= 'addressbook.data'# 6.如果存在,将文件读取到personDictionary字典中if os.path.exists(addressbookFile):  f= open(addressbookFile,'rb')    personDictionary= p.load(f)# 7.如果不存在,提示并创建else:  jCommand= input('未找到通讯录文件,是否创建?yes/no ')  if jCommand== 'yes':    f= open(addressbookFile,'wb')    p.dump(personDictionary,f)    f.close()  elif jCommand== 'no':    running= False# 8.while循环等待读取指令while running:  command= input('请输入指令:')  # 9.如果指令为addperson,添加通讯录人员  if command== 'addperson':    Operation.Addperson()    continue  # 10.如果指令为delperson,删除通讯录人员  elif command== 'delperson':    Operation.Delperson()    continue  # 11.如果指令为search,查找通讯录人员  elif command== 'search':    Operation.Search()    continue  # 12.如果指令为quit,不保存退出程序  elif command== 'quit':    Operation.Quit()    break  # 13.如果指令为sq,保存更改并退出程序  elif command== 'sq':    Operation.SaveQuit()    break  else:    print('未找到指令!')    continue

6、演示

Python3 addressbook.py 请输入指令:search请输入要查找的联系人的姓名:zhangsan联系人不存在。请输入指令:addperson请输入姓名:zhangsan请选择分组(0:家人,1:朋友,2:同事):1请输入电话:1234567请输入指令:search请输入要查找的联系人的姓名:zhangsan姓名:zhangsan,关系:朋友,电话:1234567请输入指令:sq$ Python3 addressbook.py 请输入指令:search请输入要查找的联系人的姓名:zhangsan姓名:zhangsan,关系:朋友,电话:1234567请输入指令:addperson请输入姓名:lisi请选择分组(0:家人,1:朋友,2:同事):1请输入电话:1234567请输入指令:q未找到指令!请输入指令:quit$ Python3 addressbook.py 请输入指令:search请输入要查找的联系人的姓名:lisi联系人不存在。请输入指令:search请输入要查找的联系人的姓名:zhangsan姓名:zhangsan,关系:朋友,电话:1234567请输入指令:quit

总结

以上就是Python实现命令行通讯录实例教程的全部内容,如果有疑问可以留言讨论,希望本文的内容对大家学习使用python能有所帮助。


  • 上一条:
    总结用Pdb库调试Python的方式及常用的命令
    下一条:
    python中常用的九种预处理方法分享
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • 在python语言中Flask框架的学习及简单功能示例(0个评论)
    • 在Python语言中实现GUI全屏倒计时代码示例(0个评论)
    • Python + zipfile库实现zip文件解压自动化脚本示例(0个评论)
    • python爬虫BeautifulSoup快速抓取网站图片(1个评论)
    • vscode 配置 python3开发环境的方法(0个评论)
    • 近期文章
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • 在go + gin中gorm实现指定搜索/区间搜索分页列表功能接口实例(0个评论)
    • 在go语言中实现IP/CIDR的ip和netmask互转及IP段形式互转及ip是否存在IP/CIDR(0个评论)
    • PHP 8.4 Alpha 1现已发布!(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2016-11
    • 2018-04
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2022-01
    • 2023-07
    • 2023-10
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客