本文章是记录自己学习python的过程,起到一个笔记的作用,主要是实现名片管理项目中新建名片、查看全部名片、以及查询名片并对所查询的名片进行修改、删除等简单操作。后续还会增加保存数据、对输入的数据进行格式限制:例如邮箱的格式、手机号只允许输入0-9的11位数字,增加面向对象等功能
此文件是对各个功能进行定义,主要定义了新建名片功能、查看全部名片功能、查询名片功能、对查询名片进行修改、删除的定义以及对input功能扩展来实现回车不进行修改返回默认值操作。
其中修改名片功能中使用了传参,
find_dict['name'] = input_card_info(find_dict.get('name'),"请输入修改后的姓名[不修改直接回车]:")
其中将“find_dict.get('name'),"请输入修改后的姓名[不修改直接回车]”实参 传参到调用函数 “ input_card_info(dict_value, msg)”中,“find_dict.get('name')”传入到形参dict_value中,"请输入修改后的姓名[不修改直接回车]”传参到msg中;
#当前文件负责各个功能函数的实现和定义
#当前文件负责定义函数,不负责调用
#实现功能:显示菜单、新建名片、显示全部名片、查询名片、修改名片、删除名片、返回上一级
#定义全局变量 名片列表
card_list= []
#定义显示菜单功能函数
def show_menu():
"""
当前函数实现显示菜单函数
"""
print("")
print("*" * 50)
print("欢迎使用[名片管理系统] v1.0")
print("")#空行
print("1. 新建名片")
print("2. 显示全部")
print("3. 查询名片")
print("")#空行
print("0. 退出系统")
print("*" * 50)
print("")
#定义新建名片功能函数
def new_card():
"""
当前函数实现了新建名片功能
:return:
"""
print("[功能]——新建名片")
# 1.获取用户输入信息
name_str = input("请输入姓名:")
sex_str = input("请输入性别:")
phone_str = input("请输入电话:")
qq_str = input("请输入QQ号:")
Email_str = input("请输入邮箱:")
# 2.将获取的输入信息保存到字典中
new_dict = {
'name':name_str,
'sex':sex_str,
'phone':phone_str,
'qq':qq_str,
'Email':Email_str }
# 3.将字典添加到列表中
card_list.append(new_dict)
# 4.打印提示,新建新建名片成功
print(" 新建 名片成功!","姓名是:%s " %name_str)
print("名片列表,card_list:",card_list)
#定义显示全部名片功能函数
def show_all_card():
"""
当前函数实现显示全部名片的功能
:return:
"""
#pass #pass是占位符,起到完善语法结构的作用,不输入任何内容
print("[功能]——显示全部名片")
#0.先判断名片列表中有没有数据,若无数据,提示新建名片,
# 并且代码不在向下执行 用return终止函数运行
if len(card_list) <= 0:
print("当前名片列表中没有数据,请新建名片")
return
#1.先打印表头
print("-" * 70)
print("姓名".ljust(10),"性别".ljust(10),"电话".ljust(10),"qq".ljust(10),"邮箱".ljust(10),sep="\t\t") #sep="\t\t"每个数据之间两个tap键插入
print("-" * 70)
#2.按照格式打印表格里数据(把名片列表中的数据打印出来)
for item in card_list: #临时变量item 获取的是列表中的一个个字典
print(item.get('name').ljust(10),item.get('sex').ljust(10),item.get('phone').ljust(10),
item.get('qq').ljust(10),item.get('Email').ljust(10),sep="\t\t")
#定义查询名片功能函数
def search_card():
"""
当前函数实现查询语法名片的功能
:return:
"""
#pass
print("[功能]——查询名片")
#1.获取用户要查询的姓名
find_name = input("请输入你要查询的姓名:")
#2.拿着要查询的姓名到名片列表中查找
for item in card_list:
# 临时变量item获取的是列表中一个个字典
if item.get('name') == find_name:
#3.如果找到,打印提示找到的的信息
print("以及找到姓名是:%s 的信息了" % item.get('name'))
#打印表头
print("-" * 70)
print("姓名".ljust(10), "性别".ljust(10), "电话".ljust(10), "qq".ljust(10), "邮箱".ljust(10),
sep="\t\t") # sep="\t\t"每个数据之间两个tap键插入
print("-" * 70)
#打印表格里的数据
print(item.get('name').ljust(10),item.get('sex').ljust(10),item.get('phone').ljust,item.get('qq').ljust(10),
item.get('Email').ljust(10), sep="\t\t")
#调用对名片的操作选择函数
deal_card(item)
#以及找到人物信息,退出循环
break
#4.如果没有找到,提示没有找到这个人物的信息
else:
print("没有找到姓名为: %s 的信息,请核对后重新输入!" % find_name)
#对当前名片进行操作选择函数
def deal_card(find_dict):
"""
当前函数对名片进行操作选择的功能:修改、删除、返回上一级
:return:
"""
#获取用户输入信息
op = input("请输入对名片的操作选择:[1.修改 2.删除 0.返回上一级]")
print("请输入您的选择:")
#根据用户的输入信息进行判断
if op == "1":
#若用户输入”1“,修改名片
print("[功能]————修改名片")
#1.获取修改后的信息
#2.将获取到修改后的数据 替换字典的key对于的value的值
find_dict['name'] = input_card_info(find_dict.get('name'),"请输入修改后的姓名[不修改直接回车]:")
find_dict['sex'] = input_card_info(find_dict.get('sex'),"请输入修改后的性别[不修改直接回车]:")
find_dict['phone'] = input_card_info(find_dict.get('phone'),"请输入修改后的手机号[不修改直接回车]:")
find_dict['qq'] = input_card_info(find_dict.get('qq'),"请输入修改后的qq[不修改直接回车]:")
find_dict['Email'] = input_card_info(find_dict.get('Email'),"请输入修改后的邮箱[不修改直接回车]:")
#3.打印修改名片成功
print("名片修改成功")
elif op == "2":
#若用户输入”2“,删除名片
print("[功能]————删除名片")
#把名片列表中的字典删除
card_list.remove(find_dict)
#提示删除成功
print("删除名片成功")
elif op == "0":
#若用户输入”0“,返回上一级
print("[功能]————返回上一级")
# 提前结束函数运行
return
else:
#若用户输入其他,提示”输入有误“
print("您的输入有误,请重新输入")
def input_card_info(dict_value, msg):
"""
当前函数对input()函数进行功能扩充
:param msg:
:return:
"""
# 1.使用input()函数获取用户的输入信息
info = input(msg)
# 2.对用户的输入信息进行判断
# 3.若有input有输入信息,把输入的信息返回给字典的key对应的value
if len(info) > 0:
return info
# 4.若用户没有输入信息,不能返回空字符串,把字典默认值返回
else:
return dict_value
这个文件是用来调用定义的功能函数,再次文件运行即可。
#当前文件card.main.py是总控中心,不负责实现各种功能,是负责调度各种功能函数的
#所有功能函数都由其来调度
#1.导入工具包
import cards_tool
#添加死循环,让菜单重复显示
while True:
#2.使用工具包中的工具 模块名.函数名()
# 显示菜单功能函数
cards_tool.show_menu()
#对于循环次数不确定时,可以使用死循环,
#但是死循环中必须要有退出条件,死循环可以用break来打破
#获取用户的输入选择
option = input("请输入您的选择:") #input函数输入的都是字符串
#print(option)
#print(type(option))
#根据用户的输入选择进行判断
if option in ["1","2","3"]:
#对option的值进行进一步判断
if option == "1":
#用户想要新建名片
cards_tool.new_card()
elif option == "2":
#用户想要显示全部名片
cards_tool.show_all_card()
else:
#用户想要查询名片
cards_tool.search_card()
elif option == "0":
print("欢迎使用名片管理系统")
print("欢迎再次使用")
#当用户输入"0",想要退出名片管理系统,break跳出死循环
break
else:
print("您的输入有误,请核对后重新输入")
print(">>>>名片管理系统程序结束<<<")