# 需要完成的基本功能:
# 添加名片
# 删除名片
# 修改名片
# 查询名片
# 退出系统
# 程序运行后,除非选择退出系统,否则重复执行功能
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. 记一次go中map并发引起的事故

    错误使用map引发的血案 前言 场景复原 原因 参考 错误使用map引发的血案 前言 最近业务中,同事使用map来接收返回的结果,使用waitGroup来并发的处理执行返回的结果,结果上线之后,直接崩 ...

  2. Unknown custom element: <componentName> - did you register the component correct?

    最近开发的时候遇见一个头疼的事情,之前用过的组件没有出现过任何问题,但偏偏在其他目录下引用就出问题了. 组件的名称.import的路径都没任何问题,看了其他人遇到的问题和官方文档关于组件name属性的 ...

  3. AliCrackme_2题的分析

    作者:Fly2015 AliCrackme_2.apk运行起来的注册界面,如图. 首先使用Android反编译利器Jeb对AliCrackme_2.apk的Java层代码进行分析. 很幸运,就找到了该 ...

  4. SSDT表的遍历

    //VS2005创建的工程,系统xp sp2 //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ...

  5. hdu3585 二分最大团(dp优化)

    题意       给你一些点( <= 50),让你找到k个点,使得他们之间的最小距离最大. 思路:       求最小的最大,我们可以直接二分去枚举距离,但是要注意,不要去二分double找距离 ...

  6. php、jsp、asp和aspx的区别

    目录 PHP JSP ASP ASP.NET PHP PHP是一种跨平台的服务器端的嵌入式脚本语言.它大量地借用C.Java 和 Perl 语言的语法,并耦合PHP自己的特性,使WEB开发者能够快速地 ...

  7. 启动spring boot项目时报错:java.lang.ClassNotFoundException: javax.servlet.Filter

    <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring- ...

  8. 月薪6K和月薪2W的测试,有什么区别?

    之前,我收到了一位朋友的好消息,说自己拿到了接近月薪 20k 的 offer.   说实话,软件测试岗位前期门槛低,但是想要拿到高薪真没那么简单.工作 2-3 年薪资还在原地打转的同学,都大有人在. ...

  9. 『政善治』Postman工具 — 9、在Postman中使用断言

    目录 1.Tests的介绍 2.常用SNIPPETS(片段)说明 (1)常用变量相关 (2)状态码相关 (3)响应结果断言: (4)Header : (5)响应速度: 3.示例 (1)响应码断言 (2 ...

  10. CLS的探索:Python如何让日志免费云化

    前言 日志服务(Cloud Log Service,CLS)是腾讯云提供的一站式日志服务平台,提供了从日志采集.日志存储到日志检索,图表分析.监控告警.日志投递等多项服务,协助用户通过日志来解决业务运 ...