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

对于一般的通讯录系统,主要有两个参数:姓名和电话号码,所以可以利用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. spark搭建部署

    基础环境准备 安装JDK1.8+,并设置环境变量 搭建zookeeper集群 搭建Hadoop集群 Spark local模式 上传编译完成的spark安装程序到服务器上,并解压到指定目录 [root ...

  2. Maven实战(十一)eclipse下载依赖jar包出问题

    问题描述 在pom.xml中配置了依赖,但是提示依赖不成功,或在本地仓库找不到相关依赖 大致错误如下: ArtifactDescriptorException: Failed to read arti ...

  3. Cloudera Manager 4.6 安装部署hadoop CDH集群

    Cloudera Manager 4.6 安装详解 1. Cloudera Manager介绍 1.1. 功能介绍 Cloudera Manager是一个针对hadoop集群的管理工具,功能包括:cd ...

  4. codeforces 293E Close Vertices

    题目链接 正解:点分治+树状数组. 点分治板子题,直接点分以后按照$w$排序,扫指针的时候把$w$合法的路径以$l$为下标加入树状数组统计就行了. 写这道题只是想看看我要写多久..事实证明我确实是老年 ...

  5. linux用户相关及/etc/passed,/etc/group,/etc/shadow

    useradd:新建用户 usermod:修改用户相关信息 userdel:删除用户分(-r选项) 组的操作与用户的操作类似 选项 userdel相关选项: -f:强制删除用户,即使用户已登录 -r: ...

  6. 接口自动化平台github开源项目Django

    https://github.com/githublitao/api_automation_test

  7. PAT乙级1026

    1026 程序运行时间 (15 分)   要获得一个 C 语言程序的运行时间,常用的方法是调用头文件 time.h,其中提供了 clock() 函数,可以捕捉从程序开始运行到 clock() 被调用时 ...

  8. PAT乙级1027

    1027 打印沙漏 (20 分)   本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个“*”,要求按下列格式打印 ***** *** * *** ***** 所谓“沙漏形状”,是指每行输 ...

  9. [NOIp2016]蚯蚓 (队列)

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

  10. [tensorflow源码分析] Conv2d卷积运算 (前向计算,反向梯度计算)