01 框架搭建
准备文件,确定文件名,保证能够在需要的位置编写代码
编写主运行循环,实现基本的用户输入和判断
1.1 文件准备
1cards_main.py保存主程序功能代码
程序入口
每一次启动名片管理系统都通过main这个文件启动
2新建cards_tools.py保存所有名片功能参数
将对名片的新增,查询,修改,删除等功能封装在不同的函数中
while True:
# TODO 显示功能菜单
print("您选择的操作是【%s】" % action_str)
# TODO 1,2,3针对名片的操作
if action_str in ["1", "2", "3"]:
pass
# 0 退出系统
elif action_str == "0":
print(“欢迎再次使用”)
break
# 其他内容输入错误,提示用户
else:
print("您输入的不正确,请重新选择")
字符串判断 if action_str in ["1", "2", "3"]:
无限循环 while True:
占位符 pass
TODO注释 用于标记需要去做的工作 变蓝加粗
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 while True: 2 import cards_tools 3 cards_tools.show_menu() 4 action_str = input("请选择希望执行的操作:") 5 print("您选择的操作是【%s】" % action_str) 6 # 1,2,3针对名片的操作 7 if action_str in ["1", "2", "3"]: 8 # 新增名片 9 if action_str == "1": 10 cards_tools.new_card() 11 # 显示全部 12 elif action_str == "2": 13 cards_tools.show_all() 14 # 查询名片 15 elif action_str == "3": 16 cards_tools.search_card() 17 # 0 退出系统 18 elif action_str == "0": 19 print("欢迎再次使用名片管理系统") 20 # 如果在开发程序时,不希望立刻编写分支内部的代码 21 # 可以使用pass 关键字,表示一个占位符,能够保证程序的代码结构正确 22 # 程序运行时,pass 关键字不会执行任何操作 23 break 24 # 其他内容输入错误,提示用户 25 else: 26 print("您输入的不正确,请重新选择")
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 # 变量记录所有的名片字典 2 card_list = [] 3 4 def show_menu(): 5 print("*" * 50) 6 print("欢迎使用【名片管理系统】V1.0") 7 print("1、新建名片") 8 print("2、显示全部") 9 print("3、查询名片") 10 print("") 11 print("0、退出系统") 12 print("*" * 50) 13 def new_card(): 14 """新增名片""" 15 print("-" * 50) 16 print("新增名片") 17 # 1。提示用户输入名片的详细信息 18 name_str = input("请输入姓名:") 19 phone_str = input("请输入电话:") 20 qq_str = input("请输入QQ:") 21 email_str = input("请输入邮件:") 22 # 2 .使用用户输入的信息建立一个名片字典 23 card_dict = {"name": name_str, 24 "phone": phone_str, 25 "qq": qq_str, 26 "email": email_str 27 } 28 # 3.将名片字典加入列表 29 card_list.append(card_dict) 30 print(card_list) 31 # 4.提示用户添加陈宫 32 print("添加%s的名片成功!"% name_str) 33 def show_all(): 34 """显示所有名片""" 35 print("-" * 50) 36 print("显示所有名片") 37 # 打印表头 38 if len(card_list) == 0: 39 print("当前没有记录,请使用新增功能") 40 # return 可以返回一个函数的执行结果 41 # 下方的代码不会被执行,返回调用函数的位置 42 # 不返回任何结果 43 return 44 for name in ["姓名", "电话", "QQ", "邮箱"]: 45 print(name,end=" ") 46 print("") 47 # 打印分割线 48 print("-" * 100) 49 # 遍历名片列表 依次输出字典 50 for card_dict in card_list: 51 print("%s %s %s %s " % (card_dict["name"], 52 card_dict["phone"], 53 card_dict["qq"], 54 card_dict["email"], 55 )) 56 def search_card(): 57 """搜索名片""" 58 print("-" * 50) 59 print("搜索名片") 60 # 1、提示用户输入要搜索的姓名 61 find_name = input("请输入要搜索的姓名:") 62 # 2、遍历名片列表,查询要搜索的姓名 63 for card_dict in card_list: 64 if card_dict["name"] == find_name: 65 print("找到了") 66 print("姓名 电话 QQ 邮箱") 67 print("-" * 100) 68 print("%s %s %s %s " % (card_dict["name"], 69 card_dict["phone"], 70 card_dict["qq"], 71 card_dict["email"], 72 )) 73 # 修改 删除功能 74 deal_card(card_dict) 75 break 76 # 3、如果没有找到需要提示用户 77 else: 78 print("没有找到%s" % find_name) 79 def deal_card(find_dict): 80 """处理查找到的名片 81 82 :param find_dict: 83 """ 84 print(find_dict) 85 action_str = input("【1】 修改 " 86 "【2】 删除 " 87 "【3】 返回") 88 if action_str == "1": 89 find_dict["name"] = input_card_info(find_dict["name"],"修改姓名【回车不修改】") 90 find_dict["phone"] =input_card_info(find_dict["phone"],"修改电话【回车不修改】") 91 find_dict["qq"] = input_card_info(find_dict["qq"],"修改QQ【回车不修改】") 92 find_dict["email"] = input_card_info(find_dict["email"],"修改邮件【回车不修改】") 93 print("修改名片成功") 94 elif action_str == "2": 95 card_list.remove(find_dict) 96 print("删除名片") 97 def input_card_info(dict_value,tip_message): 98 """输入名片信息 99 100 :param dict_value:字典中原有值 101 :param tip_message: 输入的提示文字 102 :return: 如果用户输入的内容 就返回内容 否则返回字典中原有的值 103 """ 104 # 1 提示用户输入内容 105 result_str = input(tip_message) 106 # 2 针对用户输入进行判断,如果输入了内容,直接返回结果 107 if len(result_str) > 0: 108 return result_str 109 # 2 如果用户没有输入内容,返回字典中原有的值 110 else: 111 return dict_value