Python 知識要點:名片管理系統 2.0
阿新 • • 發佈:2021-01-12
主程式cards_main.py呼叫cards_tools.py裡的方法,實現名片管理的功能,程式碼上更加簡潔。
【cards_main.py】
複製程式碼
! /usr/bin/python3
import cards_tools
無限迴圈,由使用者主動決定什麼時候退出迴圈!
while True:
# 每次迴圈顯示選單
cards_tools.show_menu()
action_str = input("請選擇希望執行的操作:") print("您選擇的操作是【%s】" % action_str) # 1,2,3針對名片的操作 if action_str in ["1", "2", "3"]: # TODO 新增名片 if action_str == "1": cards_tools.new_card() # 顯示全部 elif action_str == "2": cards_tools.show_all() # 查詢名片 elif action_str == "3": cards_tools.search_card() # 0 退出系統 elif action_str == "0": print("歡迎再次使用【名片管理系統】") break # 如果在開發程式時,不希望立刻編寫分支內部的程式碼 # 可以使用 pass 關鍵字,表示一個佔位符 # 能夠保證程式的程式碼結構正確 # pass # 其他內容輸入錯誤,需要提示使用者 else: print("您輸入的不正確,請重新選擇")
複製程式碼
【cards_tools.py】
複製程式碼
記錄所有的名片字典
card_list = []
def show_menu():
print("" * 30)
print("歡迎使用【名片管理系統 2.0】")
print()
print("1.新建名片")
print("2.顯示全部")
print("3.查詢名片")
print()
print("0.退出系統")
print("" * 30)
def new_card():
"""新增名片"""
print("-" * 30)
print("新增名片")
print("-" * 30)
# 1.提示使用者輸入名片的詳細資訊 name_str = input("請輸入姓名:") phone_str = input("請輸入電話:") qq_str = input("請輸入QQ:") email_str = input("請輸入郵箱:") # 2.使用使用者輸入的資訊建立一個名片字典 card_dict = {"name": name_str, "phone": phone_str, "qq": qq_str, "email": email_str} # 3.將名片字典新增到列表中 card_list.append(card_dict) print(card_list) # 4.提示使用者新增成功 print("【%s】的名片已新增成功!" % name_str)
def show_all():
"""顯示所有名片"""
print("-" * 30)
print("顯示所有名片")
print("-" * 30)
# 判斷是否存在名片記錄,如果沒有,提示使用者並且返回 if len(card_list) == 0: print("當前沒有任何的名片記錄,請使用新增功能新增名片!") # return 可以返回一個函式的執行結果 # 下方的程式碼不會被執行 # 如果 return 後面沒有任何內容 # 表示會返回到呼叫函式的位置,並不會返回任何的結果 return # 打印表頭 for name_tab in ["姓名", "電話", "QQ", "郵箱"]: print(name_tab, end="\t\t") print() # 列印分割線 print("=" * 30) # 遍歷名片列表依次輸出字典資訊 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("-" * 30)
print("搜尋名片")
print("-" * 30)
# 1.提示使用者輸入要搜尋的姓名
find_name = input("請輸入要搜尋的姓名:")
# 2.遍歷名片列表,查詢要搜尋的名字;若沒找到,需提示使用者
for card_dict in card_list:
if card_dict["name"] == find_name:
print("姓名\t\t電話\t\tQQ\t\t郵箱")
print("=" * 30)
print("%s\t\t%s\t\t%s\t\t%s" % (card_dict["name"],
card_dict["phone"],
card_dict["qq"],
card_dict["email"]))
# TODO 針對找到的名片進行修改刪除操作
deal_card(card_dict)
break
else:
print("抱歉,沒有找到【%s】" % find_name)
def deal_card(find_dict):
"""處理查詢到的名片
:param 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"], "郵箱:")
print("名片修改成功!")
elif action_str == "2":
# print("%s的名片已刪除" % find_dict["name"])
card_list.remove(find_dict)
print("【%s】的名片已刪除" % find_dict["name"])
def input_card_info(dict_value, tip_message):
"""輸入名片資訊
:param dict_value: 字典中原有的值
:param tip_message: 輸入的提示文字
:return: 如果使用者輸入了內容,就返回內容,否則返回字典中原有的值
"""
# 1.提示使用者輸入內容
result_str = input(tip_message)
# 2.針對使用者的輸入進行判斷,若輸入內容,直接返回結果
if len(result_str) > 0:
return result_str
# 3.若沒有輸入內容,返回“字典中原有的值”
else:
return dict_value
原作者:顆粒成倉
訪問地址:https://www.cnblogs.com/dc2019/p/13172056.html