繼上次的【❤️萬字【Python基礎】保姆式教學❤️,小白快速入門Python!】之後,結尾的時候給大家留了一個名片管理系統的練手專案,但是沒有告訴大家謎底,讓大家去練手。
本來是不準備講的,因為比較基礎,但有很多粉絲私信我說這個專案還是得講一講才好,那麼今天我來講一下這個簡單版本的名片管理系統的專案。
專案雖然簡單,但結合了變數、流程控制、函數等知識,我覺得在你學完了基礎入門之後,拿它來檢驗一下學習情況還是可以的。
俗話說得好「底層基礎決定上層建築」,只有掌握了這些基礎知識之後,你才能在後續的爬蟲、web前後端開發以及資料分析等方向上一往無前,Python基礎知識沒學好,再勉強去學習其他知識就會很飄。
學過的Python的應該寫這個玩意兒是沒有問題的,如果你連這個小專案都寫不出來,那麼你是應該再好好補補Python的基礎知識了。
**************************************************
歡迎使用【名片管理系統】V1.0
1. 新建名片
2. 顯示全部
3. 查詢名片
0. 退出系統
**************************************************
大概瞭解了這個作業系統的需求之後,我們先不忙著看程式碼,我們先來看看程式碼執行後的效果,這就是我們要做的東西:
Python練手專案之名片管理系統演示
目標
搭建名片管理系統 框架結構
cards_main.py
儲存 主程式功能程式碼
main
這個檔案啟動cards_tools.py
儲存 所有名片功能函數
cards_main
中新增一個 無限迴圈while True:
# TODO(小明) 顯示系統選單
action = input("請選擇操作功能:")
print("您選擇的操作是:%s" % action)
# 根據使用者輸入決定後續的操作
if action in ["1", "2", "3"]:
pass
elif action == "0":
print("歡迎再次使用【名片管理系統】")
break
else:
print("輸入錯誤,請重新輸入")
if action in ["1", "2", "3"]:
if action == "1" or action == "2" or action == "3":
in
針對 列表 判斷,避免使用 or
拼接複雜的邏輯條件int
轉換使用者輸入,可以避免 一旦使用者輸入的不是數位,導致程式執行出錯pass
就是一個空語句,不做任何事情,一般用做佔位語句#
後跟上 TODO
,用於標記需要去做的工作# TODO(作者/郵件) 顯示系統選單
cards_tools
中增加四個新函數def show_menu():
"""顯示選單
"""
pass
def new_card():
"""新建名片
"""
print("-" * 50)
print("功能:新建名片")
def show_all():
"""顯示全部
"""
print("-" * 50)
print("功能:顯示全部")
def search_card():
"""搜尋名片
"""
print("-" * 50)
print("功能:搜尋名片")
cards_main.py
中使用 import
匯入 cards_tools
模組import cards_tools
while
迴圈的程式碼如下:import cards_tools
while True:
cards_tools.show_menu()
action = input("請選擇操作功能:")
print("您選擇的操作是:%s" % action)
# 根據使用者輸入決定後續的操作
if action in ["1", "2", "3"]:
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
else:
print("輸入錯誤,請重新輸入:")
至此:
cards_main
中的所有程式碼全部開發完畢!
show_menu
函數def show_menu():
"""顯示選單
"""
print("*" * 50)
print("歡迎使用【選單管理系統】V1.0")
print("")
print("1. 新建名片")
print("2. 顯示全部")
print("3. 查詢名片")
print("")
print("0. 退出系統")
print("*" * 50)
程式就是用來處理資料的,而變數就是用來儲存資料的
cards_tools
檔案的頂部增加一個 列表變數# 所有名片記錄的列表
card_list = []
注意
def new_card():
"""新建名片
"""
print("-" * 50)
print("功能:新建名片")
# 1. 提示使用者輸入名片資訊
name = input("請輸入姓名:")
phone = input("請輸入電話:")
qq = input("請輸入 QQ 號碼:")
email = input("請輸入郵箱:")
# 2. 將使用者資訊儲存到一個字典
card_dict = {"name": name,
"phone": phone,
"qq": qq,
"email": email}
# 3. 將使用者字典新增到名片列表
card_list.append(card_dict)
print(card_list)
# 4. 提示新增成功資訊
print("成功新增 %s 的名片" % card_dict["name"])
技巧:在
PyCharm
中,可以使用SHIFT + F6
統一修改變數名
def show_all():
"""顯示全部
"""
print("-" * 50)
print("功能:顯示全部")
for card_dict in card_list:
print(card_dict)
\t
顯示def show_all():
"""顯示全部
"""
print("-" * 50)
print("功能:顯示全部")
# 列印表頭
for name in ["姓名", "電話", "QQ", "郵箱"]:
print(name, end="\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 show_all():
"""顯示全部
"""
print("-" * 50)
print("功能:顯示全部")
# 1. 判斷是否有名片記錄
if len(card_list) == 0:
print("提示:沒有任何名片記錄")
return
注意
return
表示返回return
後沒有跟任何內容,只是表示該函數執行到此就不再執行後續的程式碼def search_card():
"""搜尋名片
"""
print("-" * 50)
print("功能:搜尋名片")
# 1. 提示要搜尋的姓名
find_name = input("請輸入要搜尋的姓名:")
# 2. 遍歷字典
for card_dict in card_list:
if card_dict["name"] == find_name:
print("姓名\t\t\t電話\t\t\tQQ\t\t\t郵箱")
print("-" * 40)
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)
# TODO(小明) 針對找到的字典進行後續操作:修改/刪除
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 == "1":
print("修改")
elif action == "2":
print("刪除")
elif action == "2":
card_list.remove(find_dict)
print("刪除成功")
if action == "1":
find_dict["name"] = input("請輸入姓名:")
find_dict["phone"] = input("請輸入電話:")
find_dict["qq"] = input("請輸入QQ:")
find_dict["email"] = input("請輸入郵件:")
print("%s 的名片修改成功" % find_dict["name"])
input
函數不能滿足需求,那麼就新定義一個函數 input_card_info
對系統的 input
函數進行擴充套件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
Shebang
符號(#!
)#!
這個符號叫做 Shebang
或者 Sha-bang
Shebang
通常在 Unix
系統指令碼的中 第一行開頭 使用which
查詢 python3
直譯器所在路徑$ which python3
#! /usr/bin/python3
$ chmod +x cards_main.py
./cards_main.py
這裡面雖然有一些拓展知識,但也不要小瞧自己,況且做開發這條路上少不了要觸及到一些你沒學過的東西,難到我們都不做了嗎?加油!
這個專案還是比較簡單的,看完上面的解析你自己琢磨琢磨應該是可以寫出來的,當然了,原始碼也是可以私聊我的,都可以貢獻的,加油!