一个简单的通讯录例子

#!/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实现简单通讯录相关推荐

  1. python 课程设计扫雷报告_用 Python 实现扫雷小游戏

    扫雷是一款益智类小游戏,最早于 1992 年由微软在 Windows 上发行,游戏适合于全年龄段,规则简单,即在最短的时间内找出所有非雷格子且在中间过程中不能踩到雷,踩到雷则失败,需重新开始. 本文我 ...

  2. python课程设计编写电子通讯录_python写一个通讯录

    闲着没事,用python写一个模拟通讯录,要求要实现常用的通讯录的功能,基本流程如下 ​ 接下来就按照这个流程实现各个模块的功能 1. 定义一个类,并初始化 def __init__(self): w ...

  3. 微信python课程靠谱吗_微信python小课靠谱吗

    现如今微信python技术人员的需求提升,人才缺口很大,所以发展优势更有保障,越来越多人想融入到这个行业发展竞争,如果想让微信python技术水平得到提升,建议需要进行更全面的学习和能力培养,这样才能 ...

  4. python课程设计矩阵对角线之和_在python中如何求矩阵对角线上下元素的和?

    下面是一个示例案例,演示如何使用嵌套循环在两种情况下求和:matrix = [[i+j for j in range(4)] for i in range(4)] for row in matrix: ...

  5. 学python是属于什么行业_学Python能挣多少钱?哪些人适合学Python?

    Python是一门非常不错的编程语言,在目前市场上应用范围非常广阔,在众多领域都可以看到Python的身影,除了是人工智能.数据分析的首选语言之外,在自动化运维.自动化测试.全栈开发等都有非常重要的优 ...

  6. python编写spark程序 视频_【Python版pyspark】Spark大数据基础入门视频课程

    [注意:本课程只包含pyspark系列课程的基础入门部分] Python版本的pyspark是学习Python的人的福音,为广大的Python开发人员提供了一个使用Python调用Spark接口处理大 ...

  7. python测试开发培训怎么样_合肥Python测试开发全栈核心课程

    从初级的手工测试到.顶端的测试开发,大家都希望能不断的进行技术的提升,而就目前的现状而言,在企业内部不愿意花费成本去进行高级人才的培养,企业更愿意花高薪招聘高级技术人才,而我们希望能够在工作中不断提升 ...

  8. python自动翻译导学案_变量python学案

    ●掌握常用的关系和逻辑运算符 ●掌握 Python 中的变量及其赋值 ●数字化学习与...●学生任务二: 阅读学案,计算一下表达式的值,把结果填在学习网站上. 练习算术...... 初中八年级信息技术 ...

  9. 学python的有哪些好书_学习python有哪些好书和学习方法?

    不请自来~ 上干货 <Python数据分析>作者: [印尼]Ivan Idris Python是一种多范型编程语言,既适用于面向对象的应用开发,又适合函数式设计模式.Python已经成为数 ...

最新文章

  1. Adobe Reader栈溢出漏洞(CVE-2010-2883)分析
  2. 实录 | 平安人寿资深算法工程师姚晓远:对话生成模型的探析与创新
  3. Kubernetes Liveness and Readiness Probes
  4. python结构化数据_python新手入门必备—— 使用json保存结构化数据
  5. 本周四直播预告(内含福利)丨 经典知识库:MGR原理介绍与案例分享
  6. Spring MVC,Spring Boot文件上传
  7. 如何列出目录的所有文件
  8. python列表推导式生成随机数_python 【迭代器 生成器 列表推导式】
  9. JavaScript的RegExp实例方法exec()
  10. 中计算正方形面积的方法_风管及管道部件设计过程中常用的计算方法
  11. 后缀–ize_以ize结尾的英语单词
  12. 短距离无线传输-WIFI
  13. 手机tim邮箱服务器密码错误,qq邮箱登录失败显示session timeout解决方法
  14. 1ppi等于多少dpi_Android开发之显示篇(弄懂ppi、dpi、pt、px、dp、dip、sp之间的关系只需这一篇)...
  15. python爬取B站评论制作词云
  16. 熬夜总结!最全的Pycharm常用快捷键大全!
  17. vscode安装python扩展并开展远程调试的过程
  18. EUI-64格式生成
  19. matlab定子磁链观测器,采用不同磁链观测器的电动汽车研究
  20. java计算机毕业设计ssm驾校预约考试管理系统a3cf7(附源码、数据库)

热门文章

  1. JAVA和遮掩_JAVA 你不知道的秘密 覆写,重载,隐藏,遮蔽,遮掩
  2. ibm mq并发访问队列_消息队列之九问九答
  3. oracle控制文件修复,oracle控制文件的损坏或完全丢失的恢复办法
  4. matlab线性平面映射求通项_代数学发展史: 线性空间
  5. 二分法在顺序排列的字典中查找单词(二分)
  6. 1103: [POI2007]大都市meg(dfs序+线段树||树状数组)
  7. Python机器学习---Pyecharts制作可视化大屏
  8. java数组的调用_java中数组的应用及方法
  9. ffplay android 编译,ffmpeg android 平台编译
  10. java内存泄露有什么后果,Java内存泄露问题是什么?