python 基礎綜合應用——小開發

#python 基礎綜合應用——小開發
綜合復習

  • 變量- 循環- 函數- 模塊
    開發?名片管理系統

名片管理系統介紹

名片管理系統可以理解成花名冊軟件,通過個人新建人的信息后可以進行查詢等簡單操作的程序

名片管理系統有三個作用,

1.新建名片

2.顯示全部名片

3.查詢名片

歡迎使用【名片管理系統】V1.0

1. 新建名片

2. 顯示全部

3. 查詢名片

0. 退出系統

名片管理系統的開發

1.框架的搭建

在我們開發程序的時候都需要做的事情就是構建框架

構建框架首先需要做的就是準備文件(文件需要的是主文件和工具文件),還需要準備一些基本的代碼能夠簡單運行起來

對于**準備文件,主文件是main文件,**所有的操作都要經過這里啟動

對于**工具文件,**就是對于這個程序進行其他操作(刪除,增添)

先創建 一個main文件

無限循環

  • 在開發軟件時,如果?不希望程序執行后?立即退出 - 可以在程序中增加一個?無限循環 - 由用戶來決定?退出程序的時機
    當用戶輸入數字進行程序之后,即為正確運行,那對于**正確(true)**之后主文件進行后續的操作
?
while True:
?# TODO(小明) 顯示系統菜單
?action = input("請選擇操作功能:")
?print("您選擇的操作是:%s" % action)
?# 根據用戶輸入決定后續的操作if action in ["1", "2", "3"]:passelif action == "0":print("歡迎再次使用【名片管理系統】")
?breakelse:print("輸入錯誤,請重新輸入")
?

在這里需要注意的是

  1. 使用?in?針對?列表?判斷,避免使用?or?拼接復雜的邏輯條件 1. 沒有使用?int?轉換用戶輸入,可以避免?一旦用戶輸
  • pass?就是一個空語句,不做任何事情,一般用做占位語句 - 是為了保持程序結構的完整性
    對于工具文件

在名片管理系統中,工具文件的作用就是

1.顯示菜單

2.新建名片

3.顯示全部

4.搜索名片

所以對于工具文件,我們采取的方式是,創造四個函數

def show_menu():
?"""顯示菜單"""pass
?
def new_card():
?"""新建名片"""print("-" * 50)print("功能:新建名片")
?
?
def show_all():
?"""顯示全部"""print("-" * 50)print("功能:顯示全部")
?
?
def search_card():
?"""搜索名片"""print("-" * 50)print("功能:搜索名片")
?

注意:三個引號的作用是一個一個輸出

在做好主文件和工具文件之后我們應該進行的操作是將工具文件的四個函數導入進行優化操作

import

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("歡迎再次使用【名片管理系統】")
?breakelse:print("輸入錯誤,請重新輸入:")
?

至此我們的名片管理系統的操作就大致**完成了?**

接下來就是完善每一個工具文件的函數操作

2.新建名片

之前的文章說過,程序是用來運行數據的,變量是存儲數據的

那么我們用戶需要新建名片那么就,需要保存信息到字典中,將名片字典添加到列表中,這個時候我們用戶就添加成功

定義名片列表變量
  • 在?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”])
    ? ?

3.顯示所有名片

若想顯示所有名片,現在的情況是名片字典全部放到列表中,所以說我們可以直接把列表全部輸出即可注意:為了有更好的顯示效果,我們應該制作表頭的分割線方便用戶觀看,則有如下代碼

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可以返回一個函數的結果

下方代碼不會被執行 ,這樣子就避免了后續操作,用戶可以直接了解到,沒有名片代碼的記錄,提示用戶并且返回

4.查詢名片

  1. 提示用戶要搜索的姓名 1. 根據用戶輸入的姓名遍歷列表 1. 搜索到指定的名片后,再執行后續的操作
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(小明) 針對找到的字典進行后續操作:修改/刪除
?breakelse:print("沒有找到 %s" % find_name)
?

for遍歷后不是通過break出來**則執行else分支?**

增加名片操作函數:修改/刪除/返回主菜單

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("刪除")
?

5.查詢成功后修改刪除名片

刪除列表里面的字典即可

  • 由于找到的字典記錄已經在列表中保存 - 要刪除名片記錄,只需要把列表中對應的字典刪除即可
    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
?

6.讓python程序直接運行

cards_input.py

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

cards_main.py

#!/usr/bin/python3
import cards_toolswhile 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("歡迎再次使用【名片管理系統】")breakelse:print("輸入錯誤,請重新輸入:")

cards_tools.py

import cards_input# 所有名片記錄的列表
card_list = []def show_menu():"""顯示菜單"""print("*" * 50)print("歡迎使用【名片管理系統】V1.0")print("")print("1. 新建名片")print("2. 顯示全部")print("3. 查詢名片")print("")print("0. 退出系統")print("*" * 50)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"])def show_all():"""顯示全部"""print("-" * 50)print("功能:顯示全部")# 1. 判斷是否有名片記錄if len(card_list) == 0:print("提示:沒有任何名片記錄")return# 2. 顯示所有名片print("姓名\t\t電話\t\tQQ\t\t郵箱")print("-" * 60)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"]))print("-" * 60)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\tQQ\t\t郵箱")print("-" * 60)print("%s\t\t%s\t\t%s\t\t%s" % (card_dict["name"],card_dict["phone"],card_dict["qq"],card_dict["email"]))print("-" * 60)deal_card(card_dict)breakelse:print("沒有找到 %s" % find_name)def deal_card(find_dict):"""操作搜索到的名片字典:param find_dict:名片字典"""action_str = input("請輸入對名片的操作:1: 修改/ 2: 刪除/ 0: 返回上級菜單")if action_str == "1":find_dict["name"] = cards_input.input_card_info(find_dict["name"],"請輸入姓名[回車不修改]:")find_dict["phone"] = cards_input.input_card_info(find_dict["phone"],"請輸入電話[回車不修改]:")find_dict["qq"] = cards_input.input_card_info(find_dict["qq"],"請輸入QQ[回車不修改]:")find_dict["email"] = cards_input.input_card_info(find_dict["email"],"請輸入郵箱[回車不修改]:")print("%s 的名片修改成功!" % find_dict["name"])elif action_str == "2":card_list.remove(find_dict)print("刪除名片成功!")

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/40782.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/40782.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/40782.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【設計模式】裝飾者模式里Java實現

插: AI時代,程序員或多或少要了解些人工智能,前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家(前言 – 人工智能教程 ) 堅持不懈,越努力越幸運,大家…

【VIM的使用】

Vim 是一個非常強大的文本編輯器,尤其在 Linux 環境下被廣泛使用。它基于 vi 編輯器開發而來,增加了許多功能和改進。下面是一個簡化的 Vim 教程,幫助你快速上手: 啟動 Vim 要啟動 Vim,只需在終端中輸入 vim [filen…

Leetcode刷題2---兩數相加 Python

目錄 題目及分析解法一: 迭代法解法二: 遞歸法解法三:反轉鏈表法 題目及分析 (力扣序號2:兩數相加) 給你兩個非空的鏈表,表示兩個非負的整數。它們每位數字都是按照逆序的方式存儲的,并且每個節點只能存儲…

python之音頻處理(2)兩個音頻文件的合并

from pydub import AudioSegment# 加載兩個音頻文件 audio1 AudioSegment.from_file(r"D:\websiteDownload\huanxing.wav") audio2 AudioSegment.from_file(r"D:\websiteDownload\我今天被一件事情搞得很煩.wav")# 設置間隔(單位:…

Altium Designer專業PCB設計軟件下載安裝 Altium Designer安裝包下載獲取

在電子設計的廣袤領域中,PCB設計無疑占據著重要的地位。而Altium Designer作為一款業界領先的電子設計自動化軟件,其提供的先進布局工具,無疑為設計師們打開了一扇通往高效、精確設計的大門。 在PCB設計的核心環節——布局中,Alti…

初學Spring之自動裝配 Bean

Bean 的作用域: 1.單例模式(Spring 默認機制) scope“singleton” 2.原型模式:每次從容器中 get 時,都會產生一個新對象 scope"prototype" 3. request、session、application,只能在 web 開…

《c語言結構體怎么函數傳參》

在C語言中,結構體(struct)是一種用戶自定義的數據類型,用于組合多個不同類型的數據成員。當你要將結構體作為參數傳遞給函數時,可以按照以下幾種方式進行: 值傳遞(Pass by Value)&a…

【pytorch擴展】CUDA自定義pytorch算子(簡單demo入手)

Pytorch作為一款優秀的AI開發平臺,提供了完備的自定義算子的規范。我們用torch開發時,經常會因為現有算子的不足限制我們idea的迸發。于是,CUDA/C自定義pytorch算子是不得不磕了。 今天通過一個小實驗來梳理自定義pytorch算子都需要做哪些準…

軟設之類的繼承與泛化,多重繼承

在類中,假如父類已經寫好屬性或方法,子類想要實現相同的功能,不用專門寫代碼,直接用專門的繼承語言繼承就可以了。 比如說有一個動物類,有毛色和叫這兩個屬性和方法,又寫了一個子類是貓類,貓類…

騰訊云COS分布式對象存儲

騰訊云COS分布式對象存儲 騰訊云對象存儲(Cloud Object Storage,COS)是騰訊云提供的一種用于存儲海量文件的分布式存儲服務。 騰訊云 COS 適用于多種場景,如靜態網站托管、大規模數據備份和歸檔、多媒體存儲和處理、移動應用數據存…

Kafka搭建(單機版)

部署前提 VMware環境 : 兩臺centos系統 Jdk包:jdk-8u202-linux-x64.tar.gz Kafka包:kafka_2.12-3.5.0.tgz Zookeeper包:apache-zookeeper-3.7.2-bin.tar.gz 百度網盤自取: 鏈接: https://pan.baidu.com/s/11EWuhBoSmH3musd_3Rgodw?pwde32t 提取碼: e32t Kafka搭建(…

Camtasia 2024新功能 Camtasia2024更新介紹:AI剪輯助力微課制作 Camtasia2024密鑰 Camtasia2023免費升級更新

Camtasia 是一款功能強大的屏幕錄制和視頻編輯軟件,廣泛應用于教育、商業和娛樂領域。無論是創建教學視頻、產品演示、教程還是營銷內容,Camtasia都能提供專業的工具和功能,幫助用戶制作高質量的視頻內容。 Camtasia 2024 中文免費安裝包百度…

暑假學習DevEco Studio第2天

學習目標: 掌握頁面跳轉 學習內容: 跳轉頁面 創建頁面: 在“project”窗口。打開“entry>src>main>ets”,右擊“pages”,選擇“New>ArkTS File”,命名“Second”,點擊回車鍵。 在頁面的路由&#xff0…

昇思25天學習打卡營第16天|文本解碼原理——以MindNLP為例

在大模型中,文本解碼通常是指在自然語言處理(NLP)任務中使用的大型神經網絡模型(如Transformer架構的模型)將編碼后的文本數據轉換回可讀的原始文本的過程。這些模型在處理自然語言時,首先將輸入文本&#…

【Unix/Linux】Unix/Linux如何查看系統版本

Unix和Linux查看系統版本的指令有些區別,下面分別介紹: 一.Unix查看系統版本 在Unix系統中,查看系統版本的方法可能會根據具體的Unix操作系統而有所不同。以下是一些通用的方法,適用于多種Unix系統,包括但不限于Solaris、AIX、H…

vienna整流器過零畸變原因分析

Vienna整流器是一種常見的三電平功率因數校正(PFC)整流器,廣泛應用于電源和電能質量控制領域。由于其高效率、高功率密度和低諧波失真的特點,Vienna整流器在工業和電力電子應用中具有重要地位。然而,在實際應用中&…

ssh:(xshell)遠程連接失敗

項目場景: 提示:這里簡述項目相關背景: 云服務器遠程連接失敗 xshell 遠程連接失敗 xshell (ssh客戶端) ---------------------------------------------安全組----------防火墻-------黑白名單-----SSH服務 問題排查 1. 安全…

Playwright之錄制腳本轉Page Object類

Playwright之錄制腳本轉Page Object類 設計思路 : 我們今天UI自動化設計的時候,通常會遵循一些設計模式,例如Page Object模式。但是自己找元素再去填寫有一些麻煩,所以我們可以通過拆解錄制的腳本,將其中的元素提取出來…

DALL-E、Stable Diffusion 等 20+ 圖像生成模型綜述

二、任務場景 2.1. 無條件生成 無條件生成是指生成模型在生成圖像時不受任何額外條件或約束的影響。模型從學習的數據分布中生成圖像,而不需要關注輸入條件。 2.2. 有條件生成 有條件生成是指生成模型在生成圖像時受到額外條件或上下文的影響。這些條件可以是類別…

Vscode 保存代碼,代碼自動格式化

我這里使用的插件是Prettier-Code formatter:自動縮進整理代碼的格式,使用方法如下: 先在vscode商店找到插件并安裝:安裝插件之后,隨便找到一個項目文件,右鍵選擇格式化文檔:選中我們安裝的插件…