通讯录是记录了联系人姓名和联系方式的名录,手机通讯录是最常见的通讯录之一,人
们可以在通讯录中通过姓名查看相关联系人的联系方式、邮箱、地址等信息,也可以在其中
新增联系人,或修改、删除联系人信息。
通讯录中包含 6 个功能,每个功能都对应一个序号,用户可根据提示“请输入
功能序号”选择序号执行相应的操作,包括:
(1) 添加联系人:用户根据提示“请输入联系人的姓名:”、“请输入联系人的手机
号:”、“请输入联系人的邮箱:”和“请输入联系人的地址:”分别输入联系人的
姓名、手机号、邮箱和地址,输入完成后提示“保存成功”。注意,若输入的用
户信息为空会提示“请输入正确信息”。
(2) 查看通讯录:按固定的格式打印通讯录每个联系人的信息。若通讯录中还没有
添加过联系人,提示“通讯录无信息”。
(3) 删除联系人:用户根据提示“请输入要删除的联系人姓名:”输入联系人的姓名,
若该联系人存在于通讯录中,则提示“删除成功”,否则提示“该联系人不在通
讯录中”。注意,若通讯录中还没有添加过联系人,提示“通讯录无信息”。
(4) 修改联系人:用户根据提示输入要修改联系人的姓名,之后按照提示“请输入
新的姓名:”、“请输入新的手机号:”、“请输入新的邮箱:”、“请输入新的地址:”、
分别输入该联系人的新姓名、新手机号、新邮箱、新地址,并打印此时的通讯
录信息。注意,若通讯录中还没有添加过联系人,提示“通讯录无信息”。
(5) 查找联系人:用户根据提示“请输入要查找的联系人姓名”输入联系人的姓名,
若该联系人存在于通讯录中,则打印该联系人的所有信息,否则提示“该联系
人不在通讯录中”。注意,若通讯录中还没有添加过联系人提示“通讯录无信息”。
(6) 退出:退出手机通讯录。
本实例要求编写程序,模拟实现如上所述的手机通讯录
实例目标
熟练地创建字典
掌握字典的基本操作,能添加、修改、删除、查询字典中的元素
实例分析
手机通讯录通常包含多个联系人,每个联系人都包含姓名、手机号、邮箱、地址等基本
信息,且这些信息之间是相互对应的,因此这里可将联系人视为包含 4 个键值对的字典,将
通讯录视为一个包含多个字典的数组,将通讯录中新增联系人、删除联系人、修改联系人、
查看联系人的功能视为字典的增删改查操作。
根据以上分析可整理出以下基本实现思路:
(1)创建一个空列表,使用该列表存储联系人信息; (2)打印通讯录的功能菜单;
(3)创建一个空字典,使用该字典存储联系人的姓名、手机号、邮箱和地址信息。
(4)接收用户输入的功能序号,并根据输入的序号执行相应的操作:用户输入“1”执
行增加字典元素的操作;用户输入“2”执行查看字典元素的操作;用户输入“3”执行
删除字典的操作;用户输入“4”执行修改字典元素的操作;用户输入“5”执行查看字
典元素的操作;用户输入“6”执行结束程序的操作。
代码:

person_info = []
print("=" * 20)
print('欢迎使用通讯录:')
print("1.添加联系人")
print("2.查看通讯录")
print("3.删除联系人")
print("4.修改联系人")
print("5.查找联系人")
print("6.退出")
print("=" * 20)
while True:per_dict = {}fun_num = input('请输入功能序号:')if fun_num == '1':per_name = input('请输入联系人的姓名:')phone_num = input('请输入联系人的手机号:')per_email = input('请输入联系人的邮箱:')per_address = input('请输入联系人的地址:')# 判断输入的是否为空if per_name.strip() == '' or phone_num.strip() == ''
or per_email.strip() == '' or per_address.strip() == '':print('请输入正确信息')continueelse:per_dict.update({'姓名': per_name,'手机号': phone_num,'电子邮箱': per_email,'联系地址': per_address})person_info.append(per_dict) # 保存到列表中print('保存成功')elif fun_num == '2':if len(person_info) == 0:print('通讯录无信息')for i in person_info:print('--*' * 6)for title, info in i.items():print(title + ':' + info)print('--*' * 6)elif fun_num == '3': # 删除if len(person_info) != 0:del_name = input('请输入要删除的联系人姓名:')for i in person_info:if del_name in i.values():person_info.remove(i)print(person_info)print('删除成功')else:print('该联系人不在通讯录中')else:print('通讯录无信息')elif fun_num == '4': # 修改if len(person_info) != 0:modi_info = input('请输入要修改的联系人姓名:')for i in person_info:if modi_info in i.values():# 获取所在元组在列表中的索引位置index_num = person_info.index(i)dict_cur_perinfo = person_info[index_num]for title, info in dict_cur_perinfo.items():print(title + ':' + info)modi_name = input('请输入新的姓名:')modi_phone = input('请输入新的手机号:')modi_email = input('请输入新的邮箱:')modi_address = input('请输入新的地址:')dict_cur_perinfo.update(姓名= modi_name)dict_cur_perinfo.update(手机号= modi_phone)dict_cur_perinfo.update(电子邮箱= modi_email)dict_cur_perinfo.update(联系地址= modi_address)print(person_info)else:print('通讯录无信息')elif fun_num == '5': # 查找if len(person_info) != 0:query_name = input('请输入要查找的联系人姓名:')for i in person_info:if query_name in i.values():index_num = person_info.index(i)for title, info in person_info[index_num].items():print(title + ':' + info)breakelse:print('该联系人不在通讯录中')else:print('通讯录无信息')elif fun_num == '6': # 退出break

以上代码首先定义了一个空列表 person_info,其次打印了通讯录的功能菜单,以提示用
户根据序号选择相应的功能,然后创建一个保存联系人的字典 per_dict,并接收用户选择的
序号 fun_num,最后使用 if-elif-else 结构处理了不同序号的功能:当 fun_num 为“1”时调
用 update()方法更新字典元素;当 fun_num 为“2”时调用遍历查看字典元素;当 fun_num
为“3”时将列表 person_info 中相应的字典删除;当 fun_num 为“4”时调用 update()方法更
新字典元素;当 fun_num 为“5”时遍历查看字典元素;当 fun_num 为“6”时使用 break
语句结束程序。
需要注意的是,为保证程序能一直保持运行,这里需要使用死循环进行控制,由用户执
行退出通讯录的行为

代码测试:
运行程序,在控制台输入“1”之后的结果如下所示:

====================
欢迎使用通讯录:
1.添加联系人
2.查看通讯录
3.删除联系人
4.修改联系人
5.查找联系人
6.退出
====================
请输入功能序号:1
请输入联系人的姓名:小红
请输入联系人的手机号:123456
请输入联系人的邮箱:123456
请输入联系人的地址:北京
保存成功

在控制台输入“2”之后的结果如下所示:

请输入功能序号:2
--*--*--*--*--*--*
姓名:小红
手机号:123456
电子邮箱:123456
联系地址:北京
--*--*--*--*--*--*

在控制台输入“4”之后的结果如下所示:

请输入功能序号:4
请输入要修改的联系人姓名:小红
姓名:小红
手机号:123456
电子邮箱:123456
联系地址:北京
请输入新的姓名:小兰
请输入新的手机号:12345
请输入新的邮箱:12345@163.com
请输入新的地址:北京
[{'姓名': '小兰', '手机号': '12345', '电子邮箱': '12345@163.com', '联系地址': '
北京'}]

在控制台输入“5”之后的结果如下所示:

请输入功能序号:5
请输入要查找的联系人姓名:小红
该联系人不在通讯录中

在控制台输入“3”之后的结果如下所示:

请输入功能序号:3
请输入要删除的联系人姓名:小兰
[]
删除成功

Python 最简单的实例:手机通讯录相关推荐

  1. Python 将TXT格式转换为手机通讯录格式vcf

    import os import tkinter as tk from tkinter import filedialog from tkinter import messagebox#获取需要转换的 ...

  2. Python 实例:手机通讯录(使用text文本记录数据)

    在最原始的通讯录的基础之上进行了改进 使用了text文本记录数据 之后打算再研究一下用tkinter怎么写出有界面的通讯录(还是用text文本记录数据),然后再考虑一下用pymysql数据库记录数据, ...

  3. python基础编程小实例13——手机通讯录

    本文更新于2022/05/18,bug已修复. 编程语言:python3.9 题目 可以在通讯录中通过姓名查看相关联系人的联系方式等信息,也可以在其中新增联系人,或修改.删除联系人信息. 本实例要求编 ...

  4. python实现批量添加联系人到手机通讯录+python可视化编程案例

    简要 本案例通过python+pandas实现提取excel工作表中的数据,并将其添加相关代码信息,再保存为txt,然后保存为后缀名为.vcf的通讯录备份文件,此文件可以直接使用手机自带通讯录软件打开 ...

  5. pta通讯录排序用python实现,python实现将android手机通讯录vcf文件转化为csv

    经常会遇到将手机通讯录导出到电脑并转化为在电脑中可编辑的情况,在网上搜索了很久当前不外乎两种处理方式.1.使用电脑的outlook的通讯簿功能,将手机导出的vcf文件导入到outlook的通讯录中,然 ...

  6. python爬虫简单实例-Python 利用Python编写简单网络爬虫实例3

    利用Python编写简单网络爬虫实例3 by:授客 QQ:1033553122 实验环境 python版本:3.3.5(2.7下报错 实验目的 获取目标网站"http://bbs.51tes ...

  7. python简单编程例子-中文方便就用中文编程!Python图形界面开发实例

    原标题:中文方便就用中文编程!Python图形界面开发实例 之前做的一个Python小程序,功能很简单,面对用户群也很窄,是五笔编码编.校人员使用的五笔编码编辑器. 这样的"周末" ...

  8. python实现简单的api接口-对Python实现简单的API接口实例讲解

    get方法 代码实现 # coding:utf-8 import json from urlparse import parse_qs from wsgiref.simple_server impor ...

  9. Python正则简单实例分析

    本文实例讲述了Python正则简单用法.分享给大家供大家参考,具体如下: 悄悄打入公司内部UED的一个Python爱好者小众群,前两天一位牛人发了条消息: 小的测试题: re.split('(\W ) ...

最新文章

  1. 饥荒海难机器人怎么用_饥荒海难机器人作用详解 机器人有什么用
  2. YYCache 源码分析(一)
  3. python网页优化公司_使用python优化scipy.optimize.minimize公司
  4. 【详解,小白也能看懂】javaweb-Servlet中, OutputStream与PrintWriter的使用和区别
  5. word 替换 增加引号_如何在Word 2013文档中替换部分(不是全部)智能引号
  6. 小白 C++ 入门到大神发疯学习路线
  7. 变革,是领导者的特质
  8. C#图片处理(裁剪,缩放,清晰度,水印)
  9. pdf照片显示正常打印时被翻转_【20考研】现场确认完没事了?!准考证打印别大意!...
  10. 用html做祝福语朋友,祝福朋友工作顺利的祝福语
  11. 用三元运算符判断奇数和偶数
  12. ssd时间久丢东西_如何不丢东西
  13. 揭开docker的神秘面纱?镜像制作
  14. Android-App的设计架构经验谈,系列篇
  15. 说出至少4种vue当中的指令和它的用法?
  16. ExecutorService 详解 -- 执行器服务(线程池)
  17. muParser公式库使用简介
  18. C语言程序设计————学习知识归纳总结(三)
  19. 计算机考研--科普篇
  20. Nvidia AGX Xavier MAX9286 GMSL 载板

热门文章

  1. addslashes
  2. [LayUI]下拉框二级联动
  3. 用python画耳朵_如何用python画猪头
  4. 烟台专利申请发明-个人发明专利申请条件
  5. 如何使用神器Stetho调试Volley
  6. UTF-8 8-bit Unicode Transformation Format 万国码
  7. K3金碟新建账套及基础数据导入导出教程
  8. jquery移除元素同时销毁事件
  9. 基于OpenCv的人脸识别,翻车了居然识别错误。
  10. Vmware 分辨率设置