python名片管理系统视频_python视频学习笔记6(名片管理系统开发)
cards_main.py主函数
cards_tools.py
----------------------------------------------------------------------------------------------------------------------------------
cards_main.py
"""TODO 显示系统菜单,用于标记需要去做的工作
pass就是一个空语句,不做任何事情,一般用做占位语句
开发步骤思路讲解:
1.准备主模块和子模块。子模块放各种函数(将对名片的 **新增**、**查询**、**修改**、**删除** 等功能封装在不同的函数中
2.main函数先导入子函数模块,实现无限循环,主菜单展示,用户输入,字符串判断
3.子函数中先罗列出各个功能函数名称,而后将子函数安插到main函数中等待调用
4.开发子函数,完成show_menu
5.开发子函数,完成new_card
6.开发子函数,完成show_all
7.开发子函数,完成search_card
8.
"""
import cards_tools #导入要用到的模块
while True:#在开发软件时,如果 **不希望程序执行后** 立即退出,可以在程序中增加一个 **无限循环**
cards_tools.show_menu()#调用子函数中第一个方法
action = input("请选择操作的功能")
print("您选择的操作是:%s"%action)
if action in ["1","2","3"]:
#if action == "1" or action == "2" or action == "3":使用 `in` 针对 **列表** 判断,避免使用 `or` 拼接复杂的逻辑条件
if action =="1":
cards_tools.new_card()
elif action =="2":
cards_tools.show_all()
elif action =="3":
cards_tools.search_card()
elif action == "0":
print("欢迎再次使用")
break#和while一起用表示由用户来决定** 退出程序的时机
else:
print("输出错误,重新输入")
-------------------------------------------------------------------------------------------------------------------------------------
cards_tools.py
card_list = []
#程序就是用来处理数据的,而变量就是用来存储数据的
# 使用 **字典** 记录 **每一张名片** 的详细信息,使用 **列表** 统一记录所有的 **名片字典**
# 在 `cards_tools` 文件的顶部增加一个 **列表变量**,所有名片相关操作**,都需要使用这个列表,所以应该 **定义在程序的顶部**
def show_menu():
print("*"*50)
print("欢迎使用【菜单管理系统】V1.0")
print("")
print("1. 新建名片")
print("2. 显示全部")
print("3. 查询名片")
print("")
print("0. 退出系统")
print("*" * 50)
#增加名片
#1.定义一个列表变量在开头
#2.输入名片信息并保存到一个字典
#3.将字典添加到名片列表
def new_card():
print("-"*50)
print("功能:新建名片")
name = input("请输入姓名:") #提示用户依次输入名片信息
phone = input("请输入电话:")
qq = input("请输入 QQ 号码:")
email = input("请输入邮箱:")
card_dict = {"name":name,
"phone":phone,
"qq":qq,
"email":email}#将名片信息保存到一个字典
card_list.append(card_dict)#将字典添加到名片列表,这个名片列表是空的定义在开头
print(card_list)
print("成功添加%s的名片" % card_dict["name"])#提示名片添加完成
#查看所有名片
#增加标题
#遍历一遍列表
#增加没有名片记录判断
def show_all():
print("-" * 50)
print("功能:显示全部")
if len(card_list)==0:#增加没有名片记录判断
print("提示:没有任何名片记录")
return #如果在 `return` 后没有跟任何内容,只是表示该函数执行到此就不再执行后续的代码
for name in ["姓名", "电话", "QQ", "邮箱"]: # 打印表头
print(name, end="\t\t")#增加标题和使用 `\t` 显示
print("")
print("=" * 50)
for card_dict in card_list:
print("%s\t\t%s\t\t%s\t\t%s" % (card_dict["name"],
card_dict["phone"],
card_dict["qq"],
card_dict["email"]))
#搜索名片
#让用户输入需要搜索的姓名
#遍历字典
#搜索成功后开启一个新函数用来修改删除
def search_card():
print("-" * 50)
print("功能:搜索名片")
find_name = input("请输入要搜索的姓名:")# 1. 提示要搜索的姓名
for card_dict in card_list:# 2. 遍历字典
if card_dict["name"] == find_name:
print("%s\t\t\t%s\t\t\t%s\t\t\t%s" % (
card_dict["name"],
card_dict["phone"],
card_dict["qq"],
card_dict["email"]))
print("_"*40)
deal_card(card_dict) #3.下方开始定义修改删除的新函数
break
else:
print("没有找到 %s" % find_name)
#修改删除名片
#先让用户输入操作
#根据提示来做修改和删除方法
#开启新函数用来优化不想修改名片的功能
def deal_card(find_dict):#操作找到的名片字典,修改删除
print(find_dict)
action_str = input("请选择要执行的操作 "
"[1] 修改 [2] 删除 [0] 返回上级菜单")
if action_str == "1":
find_dict["name"] = input_card_info(find_dict["name"],"请输入姓名,回车不修改")
find_dict["phone"] = input_card_info(find_dict["phone"],"请输入电话,回车不修改")
find_dict["qq"] = input_card_info(find_dict["qq"],"请输入QQ,回车不修改")
find_dict["email"] = input_card_info(find_dict["email"],"请输入邮箱,回车不修改")#由于找到的字典记录已经在列表中保存,要修改名片记录,只需要把列表中对应的字典中每一个键值对的数据修改即可
elif action_str == "2":
card_list.remove(find_dict) #由于找到的字典记录已经在列表中保存,要删除名片记录,只需要把列表中对应的字典删除即可
print("删除成功")
#名片不想修改的情况
#定义原有值和输入值,有哪个返回哪个字段
def input_card_info(dict_value,tip_message):#:param dict_value: 字典原有值:param tip_message: 输入提示信息 :return: 如果输入,返回输入内容,否则返回字典原有值
result_str = input(tip_message) # 1. 提示用户输入内容
if len(result_str) > 0: # 2. 针对用户的输入进行判断,如果用户输入了内容,直接返回结果
return result_str
else:# 3. 如果用户没有输入内容,返回字典中原有的值`
return dict_value
python名片管理系统视频_python视频学习笔记6(名片管理系统开发)相关推荐
- opencv python 直方图反向投影_python OpenCV学习笔记直方图反向投影的实现
本文介绍了python OpenCV学习笔记直方图反向投影的实现,分享给大家,具体如下: 它用于图像分割或寻找图像中感兴趣的对象.简单地说,它创建一个与我们的输入图像相同大小(但单通道)的图像,其中每 ...
- python分析鸢尾花数据_python数据挖掘学习笔记】十六.逻辑回归LogisticRegression分析鸢尾花数据...
但是很多时候数据是非线性的,所以这篇文章主要讲述逻辑回归及Sklearn机器学习包中的LogisticRegression算法 #2018-03-28 16:57:56 March Wednesday ...
- python爬虫和接口测试_Python接口测试学习笔记(七) - bs4爬虫
一. html解析 1. bs4介绍及安装 a. 官方介绍: Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找 ...
- python中向量长度_Python线性代数学习笔记——什么是向量?实现我们自己的向量...
上一篇已经说明了为什么要学习线性代数? 下面我们正式开始学习 一切从向量开始 什么是向量,究竟为什么引⼊向量? 从研究一个数,变成了研究一组数,向量表示的就是一组数 学过中学物理都知道力,速度,加速度 ...
- python 去掉双引号_Python基础学习笔记(一)变量与数据类型
Python是一门易学的面向对象的程序设计语言,可以轻易地完成界面.文件.封装等高阶需求,可移植性好,有非常多功能强大的库与包,如Numpy(数值计算).SciPy(数学.科学与工程计算).Matpl ...
- python内建函数使用方法_python基础学习笔记(实用的内建函数和经典题目收集)...
说明:本手记大部分知识点摘自菜鸟教程,包括代码示例.(菜鸟教程的学习资源真心很好用,把它当查询工具书灰常给力) 1. 字符串方法中的string模块 maketrans ( ) 和translate( ...
- python获取键盘输入_Python 3 学习笔记之——键盘输入和读写文件
1. 键盘输入 Python提供了 input() 内置函数从标准输入读入一行文本,默认的标准输入是键盘.input 可以接收一个 Python 表达式作为输入,并将运算结果返回. str = inp ...
- python向量点乘_Python线性代数学习笔记——向量的点乘与几何意义,实现向量的点乘操作...
好久没有写文章了,抱歉了,以后每天都会更新一篇的.... 向量的点乘,也就是两个向量相乘: 我们是不这么定义的,不是两个向量对应的坐标元素相乘: 两个向量"相乘",结果是⼀个数!, ...
- python的networkx 算法_Python NetworkX 学习笔记
导读热词 chapter1 快速开始 import networkx as nx from matplotlib import pyplot as plt G = nx.Graph() # creat ...
- python爬虫urllib 数据处理_python爬虫学习笔记(三)-爬取数据之urllib库
1. 小试牛刀 怎样扒网页呢? 其实就是根据URL来获取它的网页信息,虽然我们在浏览器中看到的是一幅幅优美的画面,但是其实是由浏览器解释才呈现出来的,实质它是一段HTML代码,加 JS.CSS,如果把 ...
最新文章
- SpringBoot+Redis环境搭建
- Openresty编写Lua代码一例
- 16岁上大学,25岁博士毕业,她还是南大医学院最年轻的博导!
- node.js Promise简单介绍
- [Leedcode][JAVA][第85题][第221题][最大正方形][动态规划]
- linux的基础知识——线程
- 【计算机网络复习 数据链路层】3.5.3 CSMA协议
- easycode不推荐使用_为什么MySQL不推荐使用uuid或者雪花id作为主键?
- 地理住宅区的特点_高三地理复习专题讲解:民居特点与自然环境的关系
- Troubleshooting:重新安装Vertica建库后无法启动
- 颜色的英语单词,最好是中文和英文的
- IDEA的快捷键与qq的冲突了怎么办
- 折半插入排序顺序结构
- 如何快速定位 Redis 热 key?
- 云米、品钛、趣店等中概股领跌,多家公司股价创历史新低
- 4月22日 常用函数
- 数值分析各种算法C语言
- 格力机器人图解_格力空调拆机图解,这张图看完立马成专家
- 拿命 3 天肝出来的计算机考研数据结构与算法复习笔记(超详细教程,更新中)
- 匈牙利命名法 介绍 淘汰分析及取舍