<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>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # 綜合應用 —— 名片管理系統 ## 目標 綜合應用已經學習過的知識點: * **變量** * **流程控制** * **函數** * **模塊** 開發 **名片管理系統** ## 系統需求 * 1. 程序啟動,顯示名片管理系統歡迎界面,并顯示功能菜單 ``` ************************************************** 歡迎使用【名片管理系統】V1.0 1. 新建名片 2. 顯示全部 3. 查詢名片 0. 退出系統 ************************************************** ``` * 2. 用戶用數字選擇不同的功能 * 3. 根據功能選擇,執行不同的功能 * 4. 用戶名片需要記錄用戶的 **姓名**、**電話**、**QQ**、**郵件** * 5. 如果查詢到指定的名片,用戶可以選擇 **修改** 或者 **刪除** 名片 ## 步驟 1. 框架搭建 2. 新增名片 3. 顯示所有名片 4. 查詢名片 5. 查詢成功后修改、刪除名片 6. 讓 Python 程序能夠直接運行 ## 01. 框架搭建 **目標** * 搭建名片管理系統 **框架結構** 1. **準備文件**,確定文件名,保證能夠 **在需要的位置** 編寫代碼 2. 編寫 **主運行循環**,實現基本的 **用戶輸入和判斷** ### 1.1 文件準備 1. 新建 `cards_main.py` 保存 **主程序功能代碼** * 程序的入口 * 每一次啟動名片管理系統都通過 `main` 這個文件啟動 2. 新建 `cards_tools.py` 保存 **所有名片功能函數** * 將對名片的 **新增**、**查詢**、**修改**、**刪除** 等功能封裝在不同的函數中 ### 1.2 編寫主運行循環 * 在 `cards_main` 中添加一個 **無限循環** ```python while True: # TODO(小明) 顯示系統菜單 action = input("請選擇操作功能:") print("您選擇的操作是:%s" % action) # 根據用戶輸入決定后續的操作 if action in ["1", "2", "3"]: pass elif action == "0": print("歡迎再次使用【名片管理系統】") break else: print("輸入錯誤,請重新輸入") ``` #### 字符串判斷 ```python if action in ["1", "2", "3"]: ``` ```python if action == "1" or action == "2" or action == "3": ``` 1. 使用 `in` 針對 **列表** 判斷,避免使用 `or` 拼接復雜的邏輯條件 2. 沒有使用 `int` 轉換用戶輸入,可以避免 **一旦用戶輸入的不是數字**,導致程序運行出錯 #### pass * `pass` 就是一個空語句,不做任何事情,一般用做占位語句 * 是為了保持程序結構的完整性 #### 無限循環 * 在開發軟件時,如果 **不希望程序執行后** 立即退出 * 可以在程序中增加一個 **無限循環** * **由用戶來決定** 退出程序的時機 #### TODO 注釋 * 在 `#` 后跟上 `TODO`,用于標記需要去做的工作 ```python # TODO(作者/郵件) 顯示系統菜單 ``` ### 1.3 在 `cards_tools` 中增加四個新函數 ```python 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` 模塊 ```python import cards_tools ``` * 修改 `while` 循環的代碼如下: ```python 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` 函數 ```python def show_menu(): """顯示菜單 """ print("*" * 50) print("歡迎使用【菜單管理系統】V1.0") print("") print("1. 新建名片") print("2. 顯示全部") print("3. 查詢名片") print("") print("0. 退出系統") print("*" * 50) ``` ## 02. 保存名片數據的結構 **程序就是用來處理數據的,而變量就是用來存儲數據的** * 使用 **字典** 記錄 **每一張名片** 的詳細信息 * 使用 **列表** 統一記錄所有的 **名片字典** ![](https://pic.downk.cc/item/5e7f19df504f4bcb045b8f64.jpg) ### 定義名片列表變量 * 在 `cards_tools` 文件的頂部增加一個 **列表變量** ```python # 所有名片記錄的列表 card_list = [] ``` **注意** 1. **所有名片相關操作**,都需要使用這個列表,所以應該 **定義在程序的頂部** 2. **程序剛運行時,沒有數據**,所以是 **空列表** ## 03. 新增名片 ### 3.1 功能分析 1. 提示用戶依次輸入名片信息 2. 將名片信息保存到一個字典 3. 將字典添加到名片列表 4. 提示名片添加完成 ### 3.2 實現 new_card 方法 * 根據步驟實現代碼 ```python 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` 統一修改變量名 ## 04. 顯示所有名片 ### 4.1 功能分析 * 循環遍歷名片列表,順序顯示每一個字典的信息 ### 4.2 基礎代碼實現 ```python def show_all(): """顯示全部 """ print("-" * 50) print("功能:顯示全部") for card_dict in card_list: print(card_dict) ``` * 顯示效果不好! ### 4.3 增加標題和使用 `\t` 顯示 ```python 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 增加沒有名片記錄判斷 ```python def show_all(): """顯示全部 """ print("-" * 50) print("功能:顯示全部") # 1. 判斷是否有名片記錄 if len(card_list) == 0: print("提示:沒有任何名片記錄") return ``` **注意** * 在函數中使用 `return` 表示返回 * 如果在 `return` 后沒有跟任何內容,只是表示該函數執行到此就不再執行后續的代碼 ## 05. 查詢名片 ### 5.1 功能分析 1. 提示用戶要搜索的姓名 2. 根據用戶輸入的姓名遍歷列表 3. 搜索到指定的名片后,再執行后續的操作 ### 5.2 代碼實現 * 查詢功能實現 ```python 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) ``` * 增加名片操作函數:**修改**/**刪除**/**返回主菜單** ```python 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("刪除") ``` ## 06. 修改和刪除 ### 6.1 查詢成功后刪除名片 * 由于找到的字典記錄已經在列表中保存 * 要刪除名片記錄,只需要把列表中對應的字典刪除即可 ```python elif action == "2": card_list.remove(find_dict) print("刪除成功") ``` ### 6.2 修改名片 * 由于找到的字典記錄已經在列表中保存 * 要修改名片記錄,只需要把列表中對應的字典中每一個鍵值對的數據修改即可 ```python 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` 函數進行擴展 ```python 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 ``` ## 07. LINUX 上的 `Shebang` 符號(`#!`) * `#!`這個符號叫做 `Shebang` 或者 `Sha-bang` * `Shebang` 通常在 `Unix` 系統腳本的中 **第一行開頭** 使用 * 指明 **執行這個腳本文件** 的 **解釋程序** ### 使用 Shebang 的步驟 * 1. 使用 `which` 查詢 `python3` 解釋器所在路徑 ```bash $ which python3 ``` * 2. 修改要運行的 **主 python 文件**,在第一行增加以下內容 ```python #! /usr/bin/python3 ``` * 3. 修改 **主 python 文件** 的文件權限,增加執行權限 ```bash $ chmod +x cards_main.py ``` * 4. 在需要時執行程序即可 ```bash ./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>

                              哎呀哎呀视频在线观看