<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                [TOC] ## **綜合應用 —— 名片管理系統** ## **系統需求** 1. 程序啟動,顯示名片管理系統歡迎界面,并顯示功能菜單 ``` ************************************************** 歡迎使?【名?管理系統】V1.0 1. 新建名? 2. 顯?全部 3. 查詢名? 0. 退出系統 ************************************************** ``` * 用戶用數字選擇不同的功能 * 根據功能選擇,執行不同的功能 * 用戶名片需要記錄用戶的 姓名、電話、QQ、郵件 * 如果查詢到指定的名片,用戶可以選擇 修改 或者 刪除 名片 **步驟** 1. 框架搭建 2. 新增名片 3. 顯示所有名片 4. 查詢名片 5. 查詢成功后修改、刪除名片 6. 讓 Python 程序能夠直接運行 <br /> ### **01\. 框架搭建** 目標 * 搭建名片管理系統 框架結構 1. 準備文件,確定文件名,保證能夠 在需要的位置 編寫代碼 2. 編寫 主運行循環,實現基本的 用戶輸入和判斷 **1.1 文件準備** 1.新建 cards\_main.py 保存 主程序功能代碼 * 程序的入口 * 每一次啟動名片管理系統都通過 main 這個文件啟動 2.新建 cards\_tools.py 保存 所有名片功能函數 * 將對名片的 新增、查詢、修改、刪除 等功能封裝在不同的函數中 **1.2 編寫主運行循環** * 在 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": ``` 1. 使用 in 針對 列表 判斷,避免使用 or 拼接復雜的邏輯條件 2. 沒有使用 int 轉換用戶輸入,可以避免 一旦用戶輸入的不是數字,導致程序運行出錯 **pass** * pass 就是一個空語句,不做任何事情,一般用做占位語句 * 是為了保持程序結構的完整性 **無限循環** * 在開發軟件時,如果 不希望程序執行后 立即退出 * 可以在程序中增加一個 無限循環 * 由用戶來決定 退出程序的時機 **TODO 注釋** * 在 `#` 后跟上 `TODO` ,用于標記需要去做的工作 ``` # TODO(作者/郵件) 顯?系統菜單 ``` **1.3 在 cards\_tools 中增加四個新函數** ``` def show_menu(): '''顯?菜單''' pass def new_card(): '''新建名?''' print("-" * 50) print("功能:新建名?") def show_all(): '''顯?全部''' print("-" * 50) print("功能:顯?全部") def search_card(): '''搜索名?''' print("-" * 50) print("功能:搜索名?") ``` **1.4 導入模塊** * 在 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 中的所有代碼全部開發完畢! **1.5 完成 show_menu 函數** ``` def show_menu(): '''顯?菜單''' print("*" * 50) print("歡迎使?【菜單管理系統】V1.0") print("") print("1. 新建名?") print("2. 顯?全部") print("3. 查詢名?") print("") print("0. 退出系統") print("*" * 50) ``` <br /> ### **02. 保存名片數據的結構** 程序就是用來處理數據的,而變量就是用來存儲數據的 * 使用 字典 記錄 每一張名片 的詳細信息 * 使用 列表 統一記錄所有的 名片字典 ![Snipaste_2020-08-27_11-10-43.png](http://i.loli.net/2020/08/27/n4xrE6LF3qOjfhv.png) <br /> **定義名片列表變量** 在`cards_tools`文件的頂部增加一個列表變量 ``` # 所有名?記錄的列表 card_list = [] ``` **注意** 1. 所有名片相關操作,都需要使用這個列表,所以應該 定義在程序的頂部 2. 程序剛運行時,沒有數據,所以是 空列表 <br /> ### **03. 新增名片** **3.1 功能分析** 1. 提示用戶依次輸入名片信息 2. 將名片信息保存到一個字典 3. 將字典添加到名片列表 4. 提示名片添加完成 **3.2 實現 new_card 方法** * 根據步驟實現代碼 ``` 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 統一修改變量名 <br /> ### **04. 顯示所有名片** **4.1 功能分析** * 循環遍歷名片列表,順序顯示每一個字典的信息 **4.2 基礎代碼實現** ``` def show_all(): '''顯?全部''' print("-" * 50) print("功能:顯?全部") for card_dict in card_list: print(card_dict) ``` * 顯示效果不好! **4.3 增加標題和使用 \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"])) ``` **4.4 增加沒有名片記錄判斷** ``` def show_all(): '''顯?全部''' print("-" * 50) print("功能:顯?全部") # 1. 判斷是否有名?記錄 if len(card_list) == 0: print("提?:沒有任何名?記錄") return ``` **注意** * 在函數中使用 return 表示返回 * 如果在 return 后沒有跟任何內容,只是表示該函數執行到此就不再執行后續的代碼 <br /> ### **05. 查詢名片** **5.1 功能分析** 1. 提示用戶要搜索的姓名 2. 根據用戶輸入的姓名遍歷列表 3. 搜索到指定的名片后,再執行后續的操作 **5.2 代碼實現** * 查詢功能實現 ``` 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("刪除") ``` <br /> ### **06. 修改和刪除** **6.1 查詢成功后刪除名片** * 由于找到的字典記錄已經在列表中保存 * 要刪除名片記錄,只需要把列表中對應的字典刪除即可 ``` elif action == "2": card_list.remove(find_dict) print("刪除成功") ``` **6.2 修改名片** * 由于找到的字典記錄已經在列表中保存 * 要修改名片記錄,只需要把列表中對應的字典中每一個鍵值對的數據修改即可 ``` 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 ``` <br /> ### **07. LINUX 上的 Shebang 符號( #! )** * #! 這個符號叫做 Shebang 或者 Sha-bang * Shebang 通常在 Unix 系統腳本的中 第一行開頭 使用 * 指明 執行這個腳本文件 的 解釋程序 **使用 Shebang 的步驟** * 使用 which 查詢 python3 解釋器所在路徑 ``` $ which python3 ``` * 修改要運行的 主 python 文件,在第一行增加以下內容 ``` #! /usr/bin/python3 ``` * 修改 主 python 文件 的文件權限,增加執行權限 ``` $ chmod +x cards_main.py ``` * 在需要時執行程序即可 ``` ./cards_main.py ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看