python课程设计编写电子通讯录_用Python实现简单通讯录
一个简单的通讯录例子
#!/usr/bin/python
__author__ = 'fierce'
#coding:utf-8
import os #引用os模块
import pickle #应用pickle模块
Path='/home/Person.data' #全局变量,这里是通讯录物理路径
#判断通讯录是否存在,不存在则创建空通讯录
if os.path.exists(Path) == False: #判断通讯录是否存在
f=open((Path),'wb') #以二进制写模式打开通讯录
temp={'total': 0} #局部变量,用于计算通讯录的人数
pickle.dump(temp,f) #将对象temp保存到f中
f.close() #关闭f
else:
pass #空函数
#添加联系人
def add(): #自定义添加函数
f=open((Path),'rb') #以二进制读模式打开通讯录
a=pickle.load(f) #从f中读取信息为数组的形式
f.close #关闭f
b=0 #自定义局部变量
name = input('请输入要添加联系人的姓名:') #获取输入,这里是姓名
for key in a.keys(): #循环key为自定义,a.keys()为从通讯录读出来所有key
b+=1 #自定义变量自增
if key==name and b <= a['total']+1: #判断,满足条件执行
print("联系人已存在,添加失败!")
break #跳出循环
if b==a['total']+1 and key != name: #判断,满足条件执行
number = input('请输入号码:') #获取输入
information={name : number} #附值
a['total']+=1 #total+1
a.update(information) #更新a对象
f=open((Path),'wb') #以二进制写模式打开通讯录
pickle.dump(a,f) #把a对象写入f
f.close() #关闭f
print('添加成功')
break #跳出循环
#显示所有联系人
def showall():
f = open((Path),'rb')
a=pickle.load(f)
print("一共有{}个联系人.".format(a['total']))
for key in a.keys():
if key != 'total':
print("{""}:{""}".format(key,a[key]))
f.close
#推出通讯录
def exit():
exec("quit()")
#查找
def search(name):
f = open((Path),'rb')
a=pickle.load(f)
b=0
for key in a.keys():
b+=1
if key==name and b<=a['total']+1:
print("{}的号码是:{}".format(name,a[key]))
break
if b==a['total']+1 and key != name:
print("联系人不存在")
break
#删除
def deleate(name):
f=open((Path),'rb')
a=pickle.load(f)
f.close()
b=0
for key in a.keys():
b+=1
if key==name and b<=a['total']+1:
a.pop(name)
a['total']-=1
f=open((Path),'wb')
pickle.dump(a,f)
f.close()
print("删除成功!")
break
if b==a['total']+1 and key != name:
print("联系人不存在!无法删除!")
break
#修改
def change():
x=input("请输入所要修改的联系人姓名:")
f=open((Path),'rb')
a=pickle.load(f)
f.close()
b=0
for key in a.keys():
b+=1
if key==x and b<=a['total']+1:
y=input("请输入修改后的号码:")
a[key]=y
f=open((Path),'wb')
pickle.dump(a,f)
f.close()
print("修改成功!")
break
if b==a['total']+1 and key != name:
print("联系人不存在")
break
#界面
def point():
print("*****************************")
print("显示提示信息:*")
print("显示所有联系人:0")
print("查找联系人:1")
print("添加联系人:2")
print("删除联系人:3")
print("更改联系人资料:4")
print("退出通讯录:5")
print("*****************************")
point()
#主进程
while True: #循环
x=input("请输入您的选择:") #获取输入
if x == 2: #判断输入
add() #调用添加函数
continue #结束本次循环,重新开始下一轮循环
if x == 0:
showall() #调用显示全部函数
continue #结束本次循环,重新开始下一轮循环
if x == 5:
exit() #调用推出函数
continue #结束本次循环,重新开始下一轮循环
if x == 1:
name = input("请输入所要查找的联系人姓名:")
search(name) #调用查找函数,需要传一个参数:姓名
continue #结束本次循环,重新开始下一轮循环
if x == 3:
name = input("请输入所要删除的联系人姓名:")
deleate(name) #调用删除函数,需要传一个参数:姓名
continue #结束本次循环,重新开始下一轮循环
if x == 4:
change() #调用修改函数
continue #结束本次循环,重新开始下一轮循环
if x == '*':
point()
else:
print("输入选项不存在,请重新输入!")
continue #结束本次循环,重新开始下一轮循环
python课程设计编写电子通讯录_用Python实现简单通讯录相关推荐
- python 课程设计扫雷报告_用 Python 实现扫雷小游戏
扫雷是一款益智类小游戏,最早于 1992 年由微软在 Windows 上发行,游戏适合于全年龄段,规则简单,即在最短的时间内找出所有非雷格子且在中间过程中不能踩到雷,踩到雷则失败,需重新开始. 本文我 ...
- python课程设计编写电子通讯录_python写一个通讯录
闲着没事,用python写一个模拟通讯录,要求要实现常用的通讯录的功能,基本流程如下 接下来就按照这个流程实现各个模块的功能 1. 定义一个类,并初始化 def __init__(self): w ...
- 微信python课程靠谱吗_微信python小课靠谱吗
现如今微信python技术人员的需求提升,人才缺口很大,所以发展优势更有保障,越来越多人想融入到这个行业发展竞争,如果想让微信python技术水平得到提升,建议需要进行更全面的学习和能力培养,这样才能 ...
- python课程设计矩阵对角线之和_在python中如何求矩阵对角线上下元素的和?
下面是一个示例案例,演示如何使用嵌套循环在两种情况下求和:matrix = [[i+j for j in range(4)] for i in range(4)] for row in matrix: ...
- 学python是属于什么行业_学Python能挣多少钱?哪些人适合学Python?
Python是一门非常不错的编程语言,在目前市场上应用范围非常广阔,在众多领域都可以看到Python的身影,除了是人工智能.数据分析的首选语言之外,在自动化运维.自动化测试.全栈开发等都有非常重要的优 ...
- python编写spark程序 视频_【Python版pyspark】Spark大数据基础入门视频课程
[注意:本课程只包含pyspark系列课程的基础入门部分] Python版本的pyspark是学习Python的人的福音,为广大的Python开发人员提供了一个使用Python调用Spark接口处理大 ...
- python测试开发培训怎么样_合肥Python测试开发全栈核心课程
从初级的手工测试到.顶端的测试开发,大家都希望能不断的进行技术的提升,而就目前的现状而言,在企业内部不愿意花费成本去进行高级人才的培养,企业更愿意花高薪招聘高级技术人才,而我们希望能够在工作中不断提升 ...
- python自动翻译导学案_变量python学案
●掌握常用的关系和逻辑运算符 ●掌握 Python 中的变量及其赋值 ●数字化学习与...●学生任务二: 阅读学案,计算一下表达式的值,把结果填在学习网站上. 练习算术...... 初中八年级信息技术 ...
- 学python的有哪些好书_学习python有哪些好书和学习方法?
不请自来~ 上干货 <Python数据分析>作者: [印尼]Ivan Idris Python是一种多范型编程语言,既适用于面向对象的应用开发,又适合函数式设计模式.Python已经成为数 ...
最新文章
- Adobe Reader栈溢出漏洞(CVE-2010-2883)分析
- 实录 | 平安人寿资深算法工程师姚晓远:对话生成模型的探析与创新
- Kubernetes Liveness and Readiness Probes
- python结构化数据_python新手入门必备—— 使用json保存结构化数据
- 本周四直播预告(内含福利)丨 经典知识库:MGR原理介绍与案例分享
- Spring MVC,Spring Boot文件上传
- 如何列出目录的所有文件
- python列表推导式生成随机数_python 【迭代器 生成器 列表推导式】
- JavaScript的RegExp实例方法exec()
- 中计算正方形面积的方法_风管及管道部件设计过程中常用的计算方法
- 后缀–ize_以ize结尾的英语单词
- 短距离无线传输-WIFI
- 手机tim邮箱服务器密码错误,qq邮箱登录失败显示session timeout解决方法
- 1ppi等于多少dpi_Android开发之显示篇(弄懂ppi、dpi、pt、px、dp、dip、sp之间的关系只需这一篇)...
- python爬取B站评论制作词云
- 熬夜总结!最全的Pycharm常用快捷键大全!
- vscode安装python扩展并开展远程调试的过程
- EUI-64格式生成
- matlab定子磁链观测器,采用不同磁链观测器的电动汽车研究
- java计算机毕业设计ssm驾校预约考试管理系统a3cf7(附源码、数据库)
热门文章
- JAVA和遮掩_JAVA 你不知道的秘密 覆写,重载,隐藏,遮蔽,遮掩
- ibm mq并发访问队列_消息队列之九问九答
- oracle控制文件修复,oracle控制文件的损坏或完全丢失的恢复办法
- matlab线性平面映射求通项_代数学发展史: 线性空间
- 二分法在顺序排列的字典中查找单词(二分)
- 1103: [POI2007]大都市meg(dfs序+线段树||树状数组)
- Python机器学习---Pyecharts制作可视化大屏
- java数组的调用_java中数组的应用及方法
- ffplay android 编译,ffmpeg android 平台编译
- java内存泄露有什么后果,Java内存泄露问题是什么?