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视频学习笔记6(名片管理系统开发)的更多相关文章
- python视频学习笔记3(循环)
一.程序的三大流程 二.while 初始条件设置 —— 通常是重复执行的 计数器 while 条件(判断 计数器 是否达到 目标次数): 条件满足时,做的事情1 条件满足时,做的事情2 条件满足时,做 ...
- python视频学习笔记5(高级变量的类型)
知识点回顾: Python 中数据类型可以分为 **数字型** 和 **非数字型*** 数字型 * 整型 (`int`) * 浮点型(`float`) * 布尔型(`bool`) * 真 `True` ...
- python视频学习笔记2(if)
一.if语句1.比较运算符,if语句语法 # 1. 输入用户年龄# 2. 判断是否满 18 岁 (**>=**)# 3. 如果满 18 岁,允许进网吧嗨皮# 4. 如果未满 18 岁,提示回家写 ...
- python视频学习笔记4(函数)
函数中return和print的区别,没有return会默认返回None值 函数定义:所谓**函数**,就是把 **具有独立功能的代码块** 组织为一个小模块,在需要的时候 **调用** 1.函数的步 ...
- Python Click 学习笔记(转)
原文链接:Python Click 学习笔记 Click 是 Flask 的团队 pallets 开发的优秀开源项目,它为命令行工具的开发封装了大量方法,使开发者只需要专注于功能实现.恰好我最近在开发 ...
- Python Flask学习笔记之Hello World
Python Flask学习笔记之Hello World 安装virtualenv,配置Flask开发环境 virtualenv 虚拟环境是Python解释器的一个私有副本,在这个环境中可以安装私有包 ...
- Spring MVC 学习笔记12 —— SpringMVC+Hibernate开发(1)依赖包搭建
Spring MVC 学习笔记12 -- SpringMVC+Hibernate开发(1)依赖包搭建 用Hibernate帮助建立SpringMVC与数据库之间的联系,通过配置DAO层,Service ...
- 【原】Learning Spark (Python版) 学习笔记(三)----工作原理、调优与Spark SQL
周末的任务是更新Learning Spark系列第三篇,以为自己写不完了,但为了改正拖延症,还是得完成给自己定的任务啊 = =.这三章主要讲Spark的运行过程(本地+集群),性能调优以及Spark ...
- VSTO 学习笔记(十一)开发Excel 2010 64位自定义公式
原文:VSTO 学习笔记(十一)开发Excel 2010 64位自定义公式 Excel包含很多公式,如数学.日期.文本.逻辑等公式,非常方便,可以灵活快捷的对数据进行处理,达到我们想要的效果.Exce ...
随机推荐
- tensorflow安装过程-(windows环境下)---详解
一, 前言:本次安装tensorflow是基于Python的,安装Python的过程不做说明(既然决定按,Python肯定要先了解啊):本次教程是windows下Anaconda安装Tensorflo ...
- Linux下的C的开发之GCC的初级使用
<span style="font-family: Arial, Helvetica, sans-serif; "><span style="white ...
- 2. bash基础
通配符 通配符 功能说明 实例 * 匹配所有字符 ls *.o ? 匹配所有的当个字符 ls net??? [a-z] 匹配属于a到z范围集合内的一个字符 ls [a-i]* [...] 与方括号内的 ...
- 哈希算法MD5和SHA1的C#实现
/* * 哈希算法MD5和SHA1的C#实现 * * * 夏春涛 Email:xChuntao@163.com * Blog:http://bluesky521.cnblogs.com * 运行 ...
- ETH挖矿
转载声明:http://www.120btc.com/baike/coin/1021.html (仅为了方便自己及原文章被删除) 最近以太坊大涨市值成为仅次比特币的第二大数字货币,那么以太坊(ETH) ...
- linux 系统函数 basename和dirname
在linux系统中有这样两个系统函数,basename 和 dirname 1.basename 用于 获取文件名, 1.1 当给定扩展名作为参数之后,甚至可以直接获取文件名 2.与basename ...
- docker笔记(2)——docker镜像操作
操作环境:mac OS 10.14.6 docker版本:10.03.1 终端:iterm2 3.3 时间:2019年8月 docker 镜像,是运行容器的模板,通过pull操作会向指定仓库获取镜像, ...
- 【miscellaneous】VLC组播与接收
搭建组播服务器 第一步:运行程序后选择"媒体--串流": 第二步:通过"添加"选择需要播放的文件(以wmv文件为例),单击"串流": 第三 ...
- java8函数式接口(Functional Interface)
介绍 函数式接口(Functional Interface)就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口. 函数式接口可以被隐式转换为 lambda 表达式(箭头函数). 函数式接口代 ...
- poj1741(入门点分治)
题目链接:https://vjudge.net/problem/POJ-1741 题意:给出一棵树,求出树上距离不超过k的点对数量. 思路:点分治经典题.先找重心作为树根,然后求出子树中所有点到重心的 ...