Python-名片管理器
# 需要完成的基本功能:
# 添加名片
# 删除名片
# 修改名片
# 查询名片
# 退出系统
# 程序运行后,除非选择退出系统,否则重复执行功能
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-名片管理器的更多相关文章
- python名片管理
python名片管理是我根据视频自己敲敲的代码,后续学习会持续更新 代码 card_main.py import card_tools # 无限循环,由用户决定什么时候退出 while True: # ...
- python 上下文管理器
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 上下文管理器(context manager)是Python2.5开始支持的一种语 ...
- Python 上下文管理器和else块
最终,上下文管理器可能几乎与子程序(subroutine)本身一样重要.目前,我们只了解了上下文管理器的皮毛--Basic 语言有with 语句,而且很多语言都有.但是,在各种语言中 with 语句的 ...
- Python上下文管理器
在Python中让自己创建的函数.类.对象支持with语句,就实现了上线文管理协议.我们经常使用with open(file, "a+") as f:这样的语句,无需手动调用f.c ...
- python上下文管理器ContextLib及with语句
http://blog.csdn.net/pipisorry/article/details/50444736 with语句 with语句是从 Python 2.5 开始引入的一种与异常处理相关的功能 ...
- Python上下文管理器 with
对于系统资源的操作,如:文件操作.数据库操作等,我们往往打开文件.连接数据库后忘了将其close掉,这时就可能会引发异常,因此我们常用的做法是: # coding:utf-8 f = open(&qu ...
- 【Python系列】Python包管理器pip
缘起 这段时间忙着给朋友搞事,忙了好长一段时间,木有写博客很长时间了.之间做了两个东西,一个是邮件自动发送脚本,一个是数据处理软件.其中,在做数据处理软件的时候使用到了非Python系统库,是两个第三 ...
- Python上下文管理器(Context managers)
上下文管理器(Context managers) 上下文管理器允许你在有需要的时候,精确地分配和释放资源. 使用上下文管理器最广泛的案例就是with语句了.想象下你有两个需要结对执行的相关操作,然后还 ...
- python上下文管理器细读
test 1 上下文管理器,将生成器转化为上下文管理器 import contextlib @contextlib.contextmanager def a(): print(1) yield pri ...
- 吃透Python上下文管理器
什么是上下文管理器? 我们常见的with open操作文件,就是一个上下文管理器.如: with open(file, 'rb') as f: text = f.read() 那上下文管理器具体的定义 ...
随机推荐
- 阿里巴巴面试-Java后端-社招5面技术总结(Offer已拿)
最近接到阿里妈妈的面试通知,历经一个月,虽然过程挺坎坷,但总算是拿到了offer.这里简单记录下面试所遇问题,仅供各位大佬参考. 由于前面两面的时间过去的有点久了,只能根据记忆大概写些记得问题. 部门 ...
- 制作一个轻量级的状态管理插件:Vue-data-state
Vuex 是不是有点繁琐? Vuex 是针对 Vue2 来设计的,因为 option API 本身有很多缺点,所以 Vuex 只好做各种补丁弥补这些缺点,于是变得比较"复杂". 现 ...
- 日志功能 - 使用 conf 配置文件
配置文件:Logger.conf 工具类:LogUtil.py 测试类:testDemo.py 执行效果 配置文件:Logger.conf 定义日志的类型.级别.格式等信息. [loggers] # ...
- 使用yamllint 检查yaml语法
安装node 之后npm install -g yaml-lint 使用方法 yamllint confluence.yaml
- python3使用迭代生成器yield减少内存占用
技术背景 在python编码中for循环处理任务时,会将所有的待遍历参量加载到内存中.其实这本没有必要,因为这些参量很有可能是一次性使用的,甚至很多场景下这些参量是不需要同时存储在内存中的,这时候就会 ...
- Unity基础-脚本生命周期
理解Unity脚本的生命周期对游戏开发很重要,这篇文章对生命周期做一个记录和总结.Unity的脚本生命周期(消息),也就是在脚本运行时,自动并且按顺序执行的一系列函数.在unity官网中有对生命周期详 ...
- codeforces 229C
题意: http://codeforces.com/problemset/problem/229/C 给你一个全图,分成两部分,问你这两个途中一共有多少个三角形. 思 ...
- 解决在Vim中鼠标右键不能粘贴问题
最近维护一台服务器,使用putty登录后,用vim时,鼠标右键不能 粘贴而是进入了visual模式.网上查找一番找到了解决方法: 方 法一:在普通模式下键入" :set mouse-=a&q ...
- XCTF-i-get-id-200
i-get-id-200 题目描述 嗯..我刚建好了一个网站 解题过程 一共有三个页面 Hello World 告诉了页面是perl写的 Forms 输入name和age会返回渲染后的字符串 搜了一下 ...
- xxl-job滥用netty导致的问题和解决方案
netty作为一种高性能的网络编程框架,在很多开源项目中大放异彩,十分亮眼,但是在有些项目中却被滥用,导致使用者使用起来非常的难受. 本篇文章将会讲解xxl-job作为一款分布式任务调度系统是如何滥用 ...