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 #结束本次循环,重新开始下一轮循环

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/246137.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

图形学教程Lecture 14: RayTracing1(Acceleration Radiometry)知识点总结

课程地址&#xff1a;https://www.bilibili.com/video/BV1X7411F744?p14 课件地址&#xff1a;https://sites.cs.ucsb.edu/~lingqi/teaching/games101.html 感谢大神的课程 1.用统一的空间划分&#xff08;Grid&#xff09;加速计算光线相交。划分颗粒度需要注意&#xff0…

Unity项目代码书写规范

以Google的代码规范为主&#xff0c;稍加改动 https://google.github.io/styleguide/csharp-style.html 书写规范 基础写法 Pascal和驼峰混用&#xff0c;参数用驼峰写法&#xff0c;除参数外&#xff0c;都以Pascal写法为主。括号建议用换行方式书写Code 类, 方法, 枚举, …

python常用的包_Python3之常用包汇总

原博文 2020-06-04 10:53 − Python包网站: https://pypi.org/ 1. 繁体与简体转换(https://github.com/berniey/hanziconv.git) pip install hanziconv 示例: from hanziconv impo... 相关推荐 2019-12-09 20:32 − [TOC] # 1. 模块 ## 1.1 模块是什么&#xff1f; - 模块就是个…

Unity游戏中的一些规范和优化建议

一&#xff0e;代码规范和建议 避免Update LateUpdate等函数内频繁的GC Alloc&#xff0c;避免在Update和LateUpdate内有以下操作&#xff1a; 调用GetComponet() 调用FindObjectsOfType() 使用GameObject.Tag和GameObject.Name 等等其他有堆内存分配的操作 避免频繁调用T…

vue如何获取年月日_BootstrapVue——Vue和Bootstrap的相结合,构建响应式应用更简单...

介绍BootStrap是世界上最受欢迎的构建响应式移动优先网站的框架&#xff0c;Vue是当前最流行的前端框架之一&#xff0c;BootstrapVue则是将两者相结合&#xff0c;使用BootstrapVue&#xff0c;可以使用Vue.js和前端CSS库--Bootstrap v4在Web上构建响应式&#xff0c;移动优先…

计算机图形学:光场

https://zhuanlan.zhihu.com/p/47492390 https://zhuanlan.zhihu.com/c_1035195596059222016

cpu队列长度太长解决方法_CPU中的调试算法对比

批处理系统中采用的调度算法重要指标(吞吐量&#xff0c;周转时间&#xff0c;CPU利用率&#xff0c;公平平衡)非抢占式的先来先服务算法(FCFS)&#xff1a;按照进程就绪的先后顺序使用CPU特点&#xff1a;公平&#xff0c;实现简单&#xff0c;但是长进程后面的短进程需要等待…

Mono,CLR,.net,Net Framework之间的关系

先粗略看下各自的意义&#xff1a; .Net&#xff1a;以下这些技术的统称。是一个平台&#xff0c;而.NET平台有一个实现标准&#xff0c;叫做.Net Standard&#xff1b;.Net Framework/.Net Core/Mono&#xff1a;实现了这个标准&#xff0c;其选择的组件不一定相同CLR&#x…

c++矩阵类_数据结构-JavaScript矩阵类的设计与实现

矩阵是线性代数课学习的重点内容之一&#xff0c;也是线性代数常见工具之一&#xff0c;在应用数学、统计分析、计算机科学、计算机图像处理级物理等多学科中均有应用。矩阵主要是指数据的行列排列的形式&#xff0c;由行row与列col所组成&#xff0c;在数学中M*N矩阵是指具有M…

GPU Skin

转自&#xff1a;http://geekfaner.com/unity/blog4_GPUSkin.html GPU Skin这门技术在端游时代属于标配&#xff0c;特别是MMO游戏&#xff0c;但是手游时代就要case by case了&#xff0c;因为手机的GPU资源还是很珍贵的&#xff08;后处理之类的&#xff09;。作为技术人员&…

button按钮onclick触发不了_单按钮启停:测试模拟脉冲发生器的动作

灯闪烁所模拟是PLC单方面向控件输出信号的过程&#xff0c;控件也可以向模拟PLC输出信号。做一个带反馈灯的按钮&#xff0c;被按下后点亮&#xff0c;再按一下熄灭&#xff0c;且使按钮自保需要一定的接触时间。对应的PLC程序需要一个脉冲发生器(假设地址为L602) 把按钮触点信…

图形学教程Lecture 2: Review of Linear Algebra知识点总结

视频链接&#xff1a;https://www.bilibili.com/video/BV1X7411F744?p2 课程主页链接&#xff1a;http://games-cn.org/intro-graphics/ 课件PPT链接&#xff1a;http://games-cn.org/graphics-intro-ppt-video/ 1. 点乘 2. 点乘应用 获得两个向量的夹角&#xff1a;衡量两…

code换取微信openid_「干货」微信支付前后端流程整理(Vue+Node)

作者&#xff1a;河畔一角转发链接&#xff1a;https://mp.weixin.qq.com/s/ANLjtieWELr39zhgRAeF1w前言最近有不少同学希望我能够把微信支付的前后端流程整理一下&#xff0c;"虽然买了课程&#xff0c;依然看的比较晕"。实际上&#xff0c;我在2019年下半年出了一篇…

Games101现代图形学入门Lecture 3: Transformation知识点总结

视频链接&#xff1a;https://www.bilibili.com/video/BV1X7411F744?p3 课程主页链接&#xff1a;http://games-cn.org/intro-graphics/ 课件PPT链接&#xff1a;http://games-cn.org/graphics-intro-ppt-video/ 1. 缩放矩阵 2. 反射矩阵 3. 切变矩阵 4. 旋转矩阵 5. 线性…

pytorch forward_pytorch使用hook打印中间特征图、计算网络算力等

0、参考https://oldpan.me/archives/pytorch-autograd-hookhttps://pytorch.org/docs/stable/search.html?qhook&check_keywordsyes&areadefaulthttps://github.com/pytorch/pytorch/issues/598https://github.com/sksq96/pytorch-summaryhttps://github.com/allensll…

Games101现代图形学入门Lecture 4: Transformation Cont知识点总结

视频链接&#xff1a;https://www.bilibili.com/video/BV1X7411F744?p4 课程主页链接&#xff1a;http://games-cn.org/intro-graphics/ 课件PPT链接&#xff1a;http://games-cn.org/graphics-intro-ppt-video/ 1. 3D变换 缩放和平移矩阵 旋转矩阵 欧拉角&#xff1a;rol…

python3 for_Python3: for 表达式

#1.在控制台输入一个成绩score #2.判断成绩&#xff0c; #*如果成绩小于60输出不及格 #60到70 及格 #70到80 中等 #80到90 良好 #90 100 优秀 def level(score_list): # score input("请输入成绩&#xff1a;") # while score!"stop": for sc in score_li…

Hash和红黑树以及其在C#中的应用

参考资料&#xff1a; .Net 中HashTable&#xff0c;HashMap 和 Dictionary<key,value> 和List<T>和DataTable的比较 - 王若伊_恩赐解脱 - 博客园 c#HashSet源码解析_fdyshlk的博客-CSDN博客_c# hashset 红黑树和哈希表的区别 - 安全技术 - 亿速云 一、基本概念…

networkx 标签_networkx绘制BA无标度网络

step1: 导入networkx复杂网络库、matplotlib.pyplot、pandasimport networkx as nximport matplotlib.pyplot as pltimport pandas as pdstep2: 绘制BA无标度网络Gnx.barabasi_albert_graph(1000,1) #generate BA networkposnx.spring_layout(G) #set layoutnodecolorG.degree(…

Unity URP中的多Pass Shader和Planer shadow

一 .Unity移动端软阴影技术总结&#xff1a; https://blog.csdn.net/jxw167/article/details/82422891 二. 平面阴影的原理 https://zhuanlan.zhihu.com/p/42781261 https://zhuanlan.zhihu.com/p/31504088 王者荣耀游戏使用的就是该方法&#xff0c;已经有上线产品验证过…