# 需要完成的基本功能:
# 添加名片
# 删除名片
# 修改名片
# 查询名片
# 退出系统
# 程序运行后,除非选择退出系统,否则重复执行功能
list_info = [] # 创建一个空列表 # 打印菜单
def menu():
print("---------------------------")
print(" 名片管理系统")
print(" 1:添加名片")
print(" 2:删除名片")
print(" 3:修改名片")
print(" 4:查询名片")
print(" 5:显示所有名片")
print(" 6:退出系统")
print("---------------------------") # 添加名片
def add():
global list_info
name = input('请输入你的姓名:')
position = input('请输入你的职务:')
number = int(input('请输入你的手机号:'))
company_name = input('请输入你的公司名称:')
company_address = input('请输入你的公司地址:') for temp_info in list_info:
if temp_info['姓名'] == name:
print("此用户名已经被占用,请重新输入")
return # 如果一个函数只有return就相当于让函数结束,没有返回值
# 创建字典,存储名片信息
information = {
'姓名': name,
'职务': position,
'手机号': number,
'公司名称': company_name,
'公司地址': company_address,
}
# 向列表中添加这个字典
list_info.append(information) # 删除名片
def delete():
global list_info del_num = int(input("请输入要删除的序号:"))
if 0 <= del_num < len(list_info):
del_flag = input("你确定要删除么?yes or no")
if del_flag == "yes":
del list_info[del_num]
else:
print("输入序号有误,请重新输入") # 修改名片
def alter():
global list_info modify_num = int(input("请输入要修改的序号:"))
if 0 <= modify_num < len(list_info):
print("你要修改的信息是:")
print("姓名:%s, 职务:%s, 手机号:%s, 公司名称:%s, 公司地址:%s" % (list_info[modify_num]['姓名'],
list_info[modify_num]['职务'], list_info[modify_num]['手机号'],
list_info[modify_num]['公司名称'], list_info[modify_num]['公司地址']))
list_info[modify_num]['姓名'] = input("请输入新的姓名:")
list_info[modify_num]['职务'] = input("请输入新的职务:")
list_info[modify_num]['手机号'] = input("请输入新手机号:")
list_info[modify_num]['公司名称'] = input("请输入新公司名称:")
list_info[modify_num]['公司地址'] = input("请输入新公司地址:")
else:
print("输入序号有误,请重新输入") # 查询名片
def query():
query_name = input('请输入你要查询的名片名字:')
for temp_info in list_info:
if temp_info['姓名'] == query_name:
print("查询到的信息如下:")
print("姓名:%s, 职务:%s, 手机号:%s, 公司名称:%s, 公司地址:%s" % (
temp_info['姓名'], temp_info['职务'], temp_info['手机号'], temp_info['公司名称'], temp_info['公司地址']))
break
else:
print("没有您要找的信息....") # 显示所有名片
def traverse():
print("序号\t姓名\t\t职务\t\t手机号\t\t公司名称\t\t公司地址")
i = 0
for temp in list_info:
# temp是一个字典
print("%d\t%s\t\t%s\t\t%s\t\t%s\t\t%s" % (i, temp['姓名'], temp['职务'], temp['手机号'], temp['公司名称'], temp['公司地址']))
i += 1 def main():
while True:
menu()
digital = int(input('请输入相对应的功能数字:'))
if digital == 1:
add()
elif digital == 2:
delete()
elif digital == 3:
alter()
elif digital == 4:
query()
elif digital == 5:
traverse()
elif digital == 6:
break
else:
print('请输入错误,请重新输入') main()

Python-名片管理器的更多相关文章

  1. python名片管理

    python名片管理是我根据视频自己敲敲的代码,后续学习会持续更新 代码 card_main.py import card_tools # 无限循环,由用户决定什么时候退出 while True: # ...

  2. python 上下文管理器

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 上下文管理器(context manager)是Python2.5开始支持的一种语 ...

  3. Python 上下文管理器和else块

    最终,上下文管理器可能几乎与子程序(subroutine)本身一样重要.目前,我们只了解了上下文管理器的皮毛--Basic 语言有with 语句,而且很多语言都有.但是,在各种语言中 with 语句的 ...

  4. Python上下文管理器

    在Python中让自己创建的函数.类.对象支持with语句,就实现了上线文管理协议.我们经常使用with open(file, "a+") as f:这样的语句,无需手动调用f.c ...

  5. python上下文管理器ContextLib及with语句

    http://blog.csdn.net/pipisorry/article/details/50444736 with语句 with语句是从 Python 2.5 开始引入的一种与异常处理相关的功能 ...

  6. Python上下文管理器 with

    对于系统资源的操作,如:文件操作.数据库操作等,我们往往打开文件.连接数据库后忘了将其close掉,这时就可能会引发异常,因此我们常用的做法是: # coding:utf-8 f = open(&qu ...

  7. 【Python系列】Python包管理器pip

    缘起 这段时间忙着给朋友搞事,忙了好长一段时间,木有写博客很长时间了.之间做了两个东西,一个是邮件自动发送脚本,一个是数据处理软件.其中,在做数据处理软件的时候使用到了非Python系统库,是两个第三 ...

  8. Python上下文管理器(Context managers)

    上下文管理器(Context managers) 上下文管理器允许你在有需要的时候,精确地分配和释放资源. 使用上下文管理器最广泛的案例就是with语句了.想象下你有两个需要结对执行的相关操作,然后还 ...

  9. python上下文管理器细读

    test 1 上下文管理器,将生成器转化为上下文管理器 import contextlib @contextlib.contextmanager def a(): print(1) yield pri ...

  10. 吃透Python上下文管理器

    什么是上下文管理器? 我们常见的with open操作文件,就是一个上下文管理器.如: with open(file, 'rb') as f: text = f.read() 那上下文管理器具体的定义 ...

随机推荐

  1. RPC理论介绍

    目录 RPC概述 RPC是什么 和本地调用有什么区别 RPC模式 RPC的三个过程 为什么要使用RPC RPC和其他协议的区别 RPC使用场景 RPC的流程 RPC核心概念术语 RPC协议 RPC框架 ...

  2. JDBC_10_使用Statement实现升序和降序

    使用Statement数据库操作对象实现升序和降序 Statement可以使用在需要SQL语句拼接的情况下,因为在这样的情况下如果使用PreparedStatement就会给需要拼接的某个SQL关键字 ...

  3. Day02_14_可变长参数

    Java 可变参数 一个方法中只能有一个可变参数 它必须是该方法的最后一个形参(必须放在参数列表最后一个的位置) 传递给可变参数的数据类型必须一致 实例 public class 可变长参数 { pu ...

  4. HTTP/1.1、HTTP/2、HTTP/3 演变

    HTTP/1.1 相比 HTTP/1.0 提高了什么性能? 针对 HTTP/1.1 的性能瓶颈,HTTP/2 做了什么优化? HTTP/2 有哪些缺陷?HTTP/3 做了哪些优化? HTTP/1.1 ...

  5. 详解Linux指令与文件的搜寻

    我们在管理Linux服务器时通常会进行搜索文件及目录操作,下面我们就开始了解一下linux目录结构的相关知识. 博主再奉上一套零基础入门Linux视频,带你从入门到精通 https://www.bil ...

  6. 【软件工程】《构建之法》 & Git+ & CI/CD

    <构建之法> & Git+ & CI/CD 个人阅读作业#2 项目 内容 本作业所属课程 2020春季软件工程(罗杰 任健) 本作业要求 个人阅读作业#2 我的课程目标 具 ...

  7. C语言基础知识错误总结

    1. 以下选项中能表示合法常量的是( ). Select one: a. '\' b. 1.5E2.0 c. "\007" d. 1,200  Feedback The corre ...

  8. Android埋点技术概览

    注:本文同步发布于微信公众号:stringwu的互联网杂谈Android无埋点技术概览 本文是Android无埋点系列的开篇---埋点技术概览 1 背景 埋点是数据产品经理(分析师)基于业务需求,对用 ...

  9. 【cypress】6. cypress的默认文件结构介绍

    通过之前的一些介绍,已经大概其明白cypress是个啥,但是具体使用的细节点还有很多,需要一步步的去学习. 在安装好cypress之后,会生成一个默认项目,这个项目结构里的各个文件夹是干嘛使的呢? 一 ...

  10. 5.IA-32寄存器

    寄存器(Register)是CPU内部用来存放数据的一些小型存储区域,它与RAM(Random Access Memory,随机存储器.内存)略有不同.CPU访问(Access)RAM中的数据时要经过 ...