---恢复内容开始---

对于一般的通讯录系统,主要有两个参数:姓名和电话号码,所以可以利用python编程里面的字典来进行建立之间的所属关系,

可以利用以下代码简单实现:

    1. print('|--- 欢迎进入通讯录程序 ---|')
    2. print('|--- 1:查询联系人资料  ---|')
    3. print('|--- 2:插入新的联系人  ---|')
    4. print('|--- 3:删除已有联系人  ---|')
    5. print('|--- 4:退出通讯录程序  ---|')
    6. contacts = dict()
    7. while 1:
    8. instr = int(input('\n请输入相关的指令代码:'))
    9. if instr == 1:
    10. name = input('请输入联系人姓名:')
    11. if name in contacts:
    12. print(name + ' : ' + contacts[name])
    13. else:
    14. print('您输入的姓名不再通讯录中!')
    15. if instr == 2:
    16. name = input('请输入联系人姓名:')
    17. if name in contacts:
    18. print('您输入的姓名在通讯录中已存在 -->> ', end='')
    19. print(name + ' : ' + contacts[name])
    20. if input('是否修改用户资料(YES/NO):') == 'YES':
    21. contacts[name] = input('请输入用户联系电话:')
    22. else:
    23. contacts[name] = input('请输入用户联系电话:')
    24. if instr == 3:
    25. name = input('请输入联系人姓名:')
    26. if name in contacts:
    27. del(contacts[name])         # 也可以使用dict.pop()
    28. else:
    29. print('您输入的联系人不存在。')
    30. if instr == 4:
    31. break
    32. print('|--- 感谢使用通讯录程序 ---|')
    33. 具体实现结果如下所示:

使用条件语句的代码非常直观明了,但是效率不高。因为程序会两次访问字典的键,一次判断是否存在(例如 if name in contacts),一次获得值(例如 print(name + ' : ' + contacts[name])),如果利用异常解决方案,我们可以简单避开每次需要使用 in 判断是否键存在字典中的操作。因为只要当键不存在字典中时,会触发 KeyError 异常,利用此特性我们可以修改代码如下:

  1. print('|--- 欢迎进入通讯录程序 ---|')
  2. print('|--- 1:查询联系人资料  ---|')
  3. print('|--- 2:插入新的联系人  ---|')
  4. print('|--- 3:删除已有联系人  ---|')
  5. print('|--- 4:退出通讯录程序  ---|')
  6. contacts = dict()
  7. while 1:
  8. instr = int(input('\n请输入相关的指令代码:'))
  9. if instr == 1:
  10. name = input('请输入联系人姓名:')
  11. try:
  12. print(name + ' : ' + contacts[name])
  13.   except KeyError:
  14.             print('您输入的姓名不再通讯录中!')
  15. if instr == 2:
  16. name = input('请输入联系人姓名:')
  17. try:
  18. contacts[name] # 有点“为赋新词强说愁”的感觉
  19. print('您输入的姓名在通讯录中已存在 -->> ', end='')
  20. print(name + ' : ' + contacts[name])
  21. if input('是否修改用户资料(YES/NO):') == 'YES':
  22. contacts[name] = input('请输入用户联系电话:')
  23.  except KeyError:
  24.             contacts[name] = input('请输入用户联系电话:')
  25. if instr == 3:
  26. name = input('请输入联系人姓名:')
  27. try:
  28. del(contacts[name]) # 也可以使用dict.pop()
  29.  except KeyError:
  30.             print('您输入的联系人不存在。')   
  31. if instr == 4:
  32. break
  33. print('|--- 感谢使用通讯录程序 ---|')

python通讯录系统的更多相关文章

  1. Python云端系统开发入门——框架基础

    Django框架基础 这是我学习北京理工大学嵩天老师的<Python云端系统开发入门>课程的笔记,在此我特别感谢老师的精彩讲解和对我的引导. 1.Django简介与安装 Django是一个 ...

  2. python 保障系统(一)

    python  保障系统 from django.shortcuts import render,redirect,HttpResponse from app01 import models from ...

  3. python 报障系统(完)

    python 报障系统(完) 一.报障系统原理: 原理: 1. 简单管理 2. 角色多管理(权限) a. 登录 session放置用户信息(检测是否已经登录) session放置权限信息(检测是否有权 ...

  4. C语言通讯录系统——C语言单向链表实现

    实现的通讯录功能有:查看通讯录.添加联系人.删除联系人.查询联系人.保存并退出. 通过txt文件保存和读取通讯录数据. #include <stdio.h> #include <st ...

  5. Python云端系统开发入门 pycharm代码

    html <!DOCTYPE html><html><head> <meta charset="UTF-8"> <title& ...

  6. 【转】Python之系统交互(subprocess)

    [转]Python之系统交互(subprocess) 本节内容 os与commands模块 subprocess模块 subprocess.Popen类 总结 我们几乎可以在任何操作系统上通过命令行指 ...

  7. python获取系统内存占用信息的实例方法

    psutil是一个跨平台库(http://code.google.com/p/psutil/),能够轻松实现获取系统运行的进程和系统利用率(包括CPU.内存.磁盘.网络等)信息.它主要应用于系统监控, ...

  8. 举例讲解Linux系统下Python调用系统Shell的方法

    有时候难免需要直接调用Shell命令来完成一些比较简单的操作,比如mount一个文件系统之类的.那么我们使用Python如何调用Linux的Shell命令?下面来介绍几种常用的方法:1. os 模块 ...

  9. 一个简单的python选课系统

    下面介绍一下自己写的python程序,主要是的知识点为sys.os.json.pickle的模块应用,python程序包的的使用,以及关于类的使用. 下面是我的程序目录: bin是存放一些执行文件co ...

随机推荐

  1. C++暑期学习笔记

    # C++初步学习笔记 一.命名空间(namespace)相关 1 个人理解: 为了避免整合资源中存在的重名矛盾而采取的区别资源的措施: 2 命名空间的定义: 比如要定义一个命名空间A: namesp ...

  2. 关于markdown格式的测试..

    标题 标题一 这是? 标题二 标题三 标题四 区块 1.这是一个列表项目 还是吗? 嵌套了? 空格了? 区块加列表 标题加二级列表 嘿嘿 无序列表 RED GREEN BLUE 有序列表 dog ca ...

  3. Anaconda 包管理工具 conda 进行虚拟环境管理入门

    在基于 python 进行数据分析.机器学习等领域的实践和学习时,由于代码的更迭和更新,运行他人实现的代码或尝试安装新的工具库时往往需要指定特定版本的其他工具库,以满足特定环境的构建条件.而将同一工具 ...

  4. 1001. [BJOI2006]狼抓兔子【最小割】

    Description 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的, 而且现在的兔子还比较笨,它们只有两个窝,现在你做为狼王,面对下面这样一 ...

  5. 论文笔记 Robust face landmark estimation under occlusion

    1. Abstract 现实世界中的人脸很多时候都存在遮挡以及大的形状变化,而目前的人脸关键点检测方法在这种情况下表现欠佳, 因为它们未能提供一种系统的方法来处理异常.因而authors提出一种新的方 ...

  6. 定义抽象类Shape,抽象方法为showArea(),求出面积并显示,定义矩形类Rectangle,正方形类Square,圆类 Circle,根据各自的属性,用showArea方法求出各自的面积,在main方法中构造3个对象,调用showArea方法。(体现多态)

    实现多态的三个条件:1.要有继承2.要有抽象方法重写3.用父类指针(引用)指向子类对象 重载重写重定义的区别: 1.重载:在同一个类中进行; 编译时根据参数类型和个数决定方法调用; 子类无法重载父类; ...

  7. [NOIp2016]蚯蚓 (队列)

    #\(\color{red}{\mathcal{Description}}\) LInk 这道题是个\(zz\)题 #\(\color{red}{\mathcal{Solution}}\) 我们考虑如 ...

  8. jQuery的一点小结

    1.jQuery常用选择器 筛选: $('div').has('p'); // 选择包含p元素的div元素 $('div').not('.myClass'); //选择class不等于myClass的 ...

  9. 关于mysql中GROUP_CONCAT函数的使用

    偶然看到公司存储过程中有个字符串拼接的函数,改bug过程中使用到了,还挺有用的,于是记录下来方便记忆,帮助有需要的人. 这是我需要整理的串,他是调用了一个存储过程,传入组织机构的id和迭代层数,返回来 ...

  10. maven tomcat plugin 踩坑记

    今天在自己家里的电脑上改一个项目,安装的是社区版的 IntelliJ Idea, 没有办法安装 Tomcat 插件来启动项目.尝试用 jettry runer 启动,结果报 java.lang.Inc ...