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(名片管理系统开发)相关推荐

  1. opencv python 直方图反向投影_python OpenCV学习笔记直方图反向投影的实现

    本文介绍了python OpenCV学习笔记直方图反向投影的实现,分享给大家,具体如下: 它用于图像分割或寻找图像中感兴趣的对象.简单地说,它创建一个与我们的输入图像相同大小(但单通道)的图像,其中每 ...

  2. python分析鸢尾花数据_python数据挖掘学习笔记】十六.逻辑回归LogisticRegression分析鸢尾花数据...

    但是很多时候数据是非线性的,所以这篇文章主要讲述逻辑回归及Sklearn机器学习包中的LogisticRegression算法 #2018-03-28 16:57:56 March Wednesday ...

  3. python爬虫和接口测试_Python接口测试学习笔记(七) - bs4爬虫

    一. html解析 1. bs4介绍及安装 a. 官方介绍: Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找 ...

  4. python中向量长度_Python线性代数学习笔记——什么是向量?实现我们自己的向量...

    上一篇已经说明了为什么要学习线性代数? 下面我们正式开始学习 一切从向量开始 什么是向量,究竟为什么引⼊向量? 从研究一个数,变成了研究一组数,向量表示的就是一组数 学过中学物理都知道力,速度,加速度 ...

  5. python 去掉双引号_Python基础学习笔记(一)变量与数据类型

    Python是一门易学的面向对象的程序设计语言,可以轻易地完成界面.文件.封装等高阶需求,可移植性好,有非常多功能强大的库与包,如Numpy(数值计算).SciPy(数学.科学与工程计算).Matpl ...

  6. python内建函数使用方法_python基础学习笔记(实用的内建函数和经典题目收集)...

    说明:本手记大部分知识点摘自菜鸟教程,包括代码示例.(菜鸟教程的学习资源真心很好用,把它当查询工具书灰常给力) 1. 字符串方法中的string模块 maketrans ( ) 和translate( ...

  7. python获取键盘输入_Python 3 学习笔记之——键盘输入和读写文件

    1. 键盘输入 Python提供了 input() 内置函数从标准输入读入一行文本,默认的标准输入是键盘.input 可以接收一个 Python 表达式作为输入,并将运算结果返回. str = inp ...

  8. python向量点乘_Python线性代数学习笔记——向量的点乘与几何意义,实现向量的点乘操作...

    好久没有写文章了,抱歉了,以后每天都会更新一篇的.... 向量的点乘,也就是两个向量相乘: 我们是不这么定义的,不是两个向量对应的坐标元素相乘: 两个向量"相乘",结果是⼀个数!, ...

  9. python的networkx 算法_Python NetworkX 学习笔记

    导读热词 chapter1 快速开始 import networkx as nx from matplotlib import pyplot as plt G = nx.Graph() # creat ...

  10. python爬虫urllib 数据处理_python爬虫学习笔记(三)-爬取数据之urllib库

    1. 小试牛刀 怎样扒网页呢? 其实就是根据URL来获取它的网页信息,虽然我们在浏览器中看到的是一幅幅优美的画面,但是其实是由浏览器解释才呈现出来的,实质它是一段HTML代码,加 JS.CSS,如果把 ...

最新文章

  1. SpringBoot+Redis环境搭建
  2. Openresty编写Lua代码一例
  3. 16岁上大学,25岁博士毕业,她还是南大医学院最年轻的博导!
  4. node.js Promise简单介绍
  5. [Leedcode][JAVA][第85题][第221题][最大正方形][动态规划]
  6. linux的基础知识——线程
  7. 【计算机网络复习 数据链路层】3.5.3 CSMA协议
  8. easycode不推荐使用_为什么MySQL不推荐使用uuid或者雪花id作为主键?
  9. 地理住宅区的特点_高三地理复习专题讲解:民居特点与自然环境的关系
  10. Troubleshooting:重新安装Vertica建库后无法启动
  11. 颜色的英语单词,最好是中文和英文的
  12. IDEA的快捷键与qq的冲突了怎么办
  13. 折半插入排序顺序结构
  14. 如何快速定位 Redis 热 key?
  15. 云米、品钛、趣店等中概股领跌,多家公司股价创历史新低
  16. 4月22日 常用函数
  17. 数值分析各种算法C语言
  18. 格力机器人图解_格力空调拆机图解,这张图看完立马成专家
  19. 拿命 3 天肝出来的计算机考研数据结构与算法复习笔记(超详细教程,更新中)
  20. 匈牙利命名法 介绍 淘汰分析及取舍

热门文章

  1. MyEclipse/Eclipse中properties文件中文乱码问题解决
  2. Terminal终端的快捷键
  3. linux快速复制大量小文件方法
  4. Vue-router(二) 子路由(嵌套路由)
  5. delphi使用存储过程
  6. CRM的使用是讲究技巧的
  7. flume+elasticsearch日志收集分析
  8. pip安装lxml报错
  9. SQL应用与开发:(三)数据操作 #183; 改 AND 删
  10. 如果你的sharepoint 2013很慢...