欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python綜合應(yīng)用名片管理系統(tǒng)案例詳解

 更新時(shí)間:2020年01月03日 09:50:18   作者:小飛俠v科比  
這篇文章主要介紹了Python綜合應(yīng)用名片管理系統(tǒng),結(jié)合具體案例形式詳細(xì)分析了Python名片管理系統(tǒng)相關(guān)步驟、原理、實(shí)現(xiàn)方法與操作注意事項(xiàng),需要的朋友可以參考下

本文實(shí)例講述了Python綜合應(yīng)用名片管理系統(tǒng)。分享給大家供大家參考,具體如下:

綜合應(yīng)用已經(jīng)學(xué)習(xí)過(guò)的知識(shí)點(diǎn):

  • 變量
  • 流程控制
  • 函數(shù)
  • 模塊

開(kāi)發(fā) 名片管理系統(tǒng)

系統(tǒng)需求

  1. 程序啟動(dòng),顯示名片管理系統(tǒng)歡迎界面,并顯示功能菜單
**************************************************
歡迎使用【名片管理系統(tǒng)】V1.0

1. 新建名片
2. 顯示全部
3. 查詢名片

0. 退出系統(tǒng)
**************************************************
    1. 用戶用數(shù)字選擇不同的功能
    1. 根據(jù)功能選擇,執(zhí)行不同的功能
    1. 用戶名片需要記錄用戶的 姓名、電話、QQ、郵件
    1. 如果查詢到指定的名片,用戶可以選擇 修改 或者 刪除 名片

步驟

  1. 框架搭建
  2. 新增名片
  3. 顯示所有名片
  4. 查詢名片
  5. 查詢成功后修改、刪除名片
  6. 讓 Python 程序能夠直接運(yùn)行

01. 框架搭建

目標(biāo)

  • 搭建名片管理系統(tǒng) 框架結(jié)構(gòu)
    1. 準(zhǔn)備文件,確定文件名,保證能夠 在需要的位置 編寫代碼
    2. 編寫 主運(yùn)行循環(huán),實(shí)現(xiàn)基本的 用戶輸入和判斷

1.1 文件準(zhǔn)備

  1. 新建 cards_main.py 保存 主程序功能代碼
    • 程序的入口
    • 每一次啟動(dòng)名片管理系統(tǒng)都通過(guò) main 這個(gè)文件啟動(dòng)
  2. 新建 cards_tools.py 保存 所有名片功能函數(shù)
    • 將對(duì)名片的 新增、查詢、修改、刪除 等功能封裝在不同的函數(shù)中

1.2 編寫主運(yùn)行循環(huán)

  • 在 cards_main 中添加一個(gè) 無(wú)限循環(huán)
while True:

  # TODO(小明) 顯示系統(tǒng)菜單

  action = input("請(qǐng)選擇操作功能:")

  print("您選擇的操作是:%s" % action)

  # 根據(jù)用戶輸入決定后續(xù)的操作
  if action in ["1", "2", "3"]:
    pass
  elif action == "0":
    print("歡迎再次使用【名片管理系統(tǒng)】")

    break
  else:
    print("輸入錯(cuò)誤,請(qǐng)重新輸入")

字符串判斷

if action in ["1", "2", "3"]:
if action == "1" or action == "2" or action == "3":
  1. 使用 in 針對(duì) 列表 判斷,避免使用 or 拼接復(fù)雜的邏輯條件
  2. 沒(méi)有使用 int 轉(zhuǎn)換用戶輸入,可以避免 一旦用戶輸入的不是數(shù)字,導(dǎo)致程序運(yùn)行出錯(cuò)

pass

  • pass 就是一個(gè)空語(yǔ)句,不做任何事情,一般用做占位語(yǔ)句
  • 是為了保持程序結(jié)構(gòu)的完整性

無(wú)限循環(huán)

  • 在開(kāi)發(fā)軟件時(shí),如果 不希望程序執(zhí)行后 立即退出
  • 可以在程序中增加一個(gè) 無(wú)限循環(huán)
  • 由用戶來(lái)決定 退出程序的時(shí)機(jī)

TODO 注釋

  • 在 # 后跟上 TODO,用于標(biāo)記需要去做的工作
# TODO(作者/郵件) 顯示系統(tǒng)菜單

1.3 在 cards_tools 中增加四個(gè)新函數(shù)

def show_menu():

  """顯示菜單
  """
  pass

def new_card():

  """新建名片
  """
  print("-" * 50)
  print("功能:新建名片")


def show_all():

  """顯示全部
  """
  print("-" * 50)
  print("功能:顯示全部")


def search_card():

  """搜索名片
  """
  print("-" * 50)
  print("功能:搜索名片")

1.4 導(dǎo)入模塊

  • 在 cards_main.py 中使用 import 導(dǎo)入 cards_tools 模塊
import cards_tools

修改 while 循環(huán)的代碼如下:

import cards_tools

while True:

  cards_tools.show_menu()

  action = input("請(qǐng)選擇操作功能:")

  print("您選擇的操作是:%s" % action)

  # 根據(jù)用戶輸入決定后續(xù)的操作
  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("歡迎再次使用【名片管理系統(tǒng)】")

    break
  else:
    print("輸入錯(cuò)誤,請(qǐng)重新輸入:")

至此:cards_main 中的所有代碼全部開(kāi)發(fā)完畢!

1.5 完成 show_menu 函數(shù)

def show_menu():

  """顯示菜單
  """
  print("*" * 50)
  print("歡迎使用【菜單管理系統(tǒng)】V1.0")
  print("")
  print("1. 新建名片")
  print("2. 顯示全部")
  print("3. 查詢名片")
  print("")
  print("0. 退出系統(tǒng)")
  print("*" * 50)

02. 保存名片數(shù)據(jù)的結(jié)構(gòu)

程序就是用來(lái)處理數(shù)據(jù)的,而變量就是用來(lái)存儲(chǔ)數(shù)據(jù)的

  • 使用 字典 記錄 每一張名片 的詳細(xì)信息

  • 使用 列表 統(tǒng)一記錄所有的 名片字典
    在這里插入圖片描述
    定義名片列表變量

  • 在 cards_tools 文件的頂部增加一個(gè) 列表變量

# 所有名片記錄的列表
card_list = []

注意

  1. 所有名片相關(guān)操作,都需要使用這個(gè)列表,所以應(yīng)該 定義在程序的頂部
  2. 程序剛運(yùn)行時(shí),沒(méi)有數(shù)據(jù),所以是 空列表

03. 新增名片

3.1 功能分析

  1. 提示用戶依次輸入名片信息
  2. 將名片信息保存到一個(gè)字典
  3. 將字典添加到名片列表
  4. 提示名片添加完成

3.2 實(shí)現(xiàn) new_card 方法

  • 根據(jù)步驟實(shí)現(xiàn)代碼
def new_card():

  """新建名片
  """
  print("-" * 50)
  print("功能:新建名片")

  # 1. 提示用戶輸入名片信息
  name = input("請(qǐng)輸入姓名:")
  phone = input("請(qǐng)輸入電話:")
  qq = input("請(qǐng)輸入 QQ 號(hào)碼:")
  email = input("請(qǐng)輸入郵箱:")

  # 2. 將用戶信息保存到一個(gè)字典
  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 統(tǒng)一修改變量名

04. 顯示所有名片

4.1 功能分析

  • 循環(huán)遍歷名片列表,順序顯示每一個(gè)字典的信息

4.2 基礎(chǔ)代碼實(shí)現(xiàn)

def show_all():

  """顯示全部
  """
  print("-" * 50)
  print("功能:顯示全部")

  for card_dict in card_list:

    print(card_dict)
    
  • 顯示效果不好!

4.3 增加標(biāo)題和使用 \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 增加沒(méi)有名片記錄判斷

def show_all():
  """顯示全部
  """
  print("-" * 50)
  print("功能:顯示全部")

  # 1. 判斷是否有名片記錄
  if len(card_list) == 0:
    print("提示:沒(méi)有任何名片記錄")

    return

注意

  • 在函數(shù)中使用 return 表示返回
  • 如果在 return 后沒(méi)有跟任何內(nèi)容,只是表示該函數(shù)執(zhí)行到此就不再執(zhí)行后續(xù)的代碼

05. 查詢名片

5.1 功能分析

  1. 提示用戶要搜索的姓名
  2. 根據(jù)用戶輸入的姓名遍歷列表
  3. 搜索到指定的名片后,再執(zhí)行后續(xù)的操作

5.2 代碼實(shí)現(xiàn)

  • 查詢功能實(shí)現(xiàn)
def search_card():

  """搜索名片
  """
  print("-" * 50)
  print("功能:搜索名片")

  # 1. 提示要搜索的姓名
  find_name = input("請(qǐng)輸入要搜索的姓名:")

  # 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(小明) 針對(duì)找到的字典進(jìn)行后續(xù)操作:修改/刪除

      break
  else:
    print("沒(méi)有找到 %s" % find_name)

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

def deal_card(find_dict):

  """操作搜索到的名片字典

  :param find_dict:找到的名片字典
  """
  print(find_dict)

  action_str = input("請(qǐng)選擇要執(zhí)行的操作 "
            "[1] 修改 [2] 刪除 [0] 返回上級(jí)菜單")

  if action == "1":
    print("修改")
  elif action == "2":
    print("刪除")

06. 修改和刪除

6.1 查詢成功后刪除名片

  • 由于找到的字典記錄已經(jīng)在列表中保存
  • 要?jiǎng)h除名片記錄,只需要把列表中對(duì)應(yīng)的字典刪除即可
  elif action == "2":
    card_list.remove(find_dict)

    print("刪除成功")

6.2 修改名片

由于找到的字典記錄已經(jīng)在列表中保存

  • 要修改名片記錄,只需要把列表中對(duì)應(yīng)的字典中每一個(gè)鍵值對(duì)的數(shù)據(jù)修改即可
  if action == "1":

    find_dict["name"] = input("請(qǐng)輸入姓名:")
    find_dict["phone"] = input("請(qǐng)輸入電話:")
    find_dict["qq"] = input("請(qǐng)輸入QQ:")
    find_dict["email"] = input("請(qǐng)輸入郵件:")

    print("%s 的名片修改成功" % find_dict["name"])

修改名片細(xì)化

  • 如果用戶在使用時(shí),某些名片內(nèi)容并不想修改,應(yīng)該如何做呢?—— 既然系統(tǒng)提供的 input 函數(shù)不能滿足需求,那么就新定義一個(gè)函數(shù) input_card_info 對(duì)系統(tǒng)的 input 函數(shù)進(jìn)行擴(kuò)展
def input_card_info(dict_value, tip_message):

  """輸入名片信息

  :param dict_value: 字典原有值
  :param tip_message: 輸入提示信息
  :return: 如果輸入,返回輸入內(nèi)容,否則返回字典原有值
  """
  # 1. 提示用戶輸入內(nèi)容
  result_str = input(tip_message)

  # 2. 針對(duì)用戶的輸入進(jìn)行判斷,如果用戶輸入了內(nèi)容,直接返回結(jié)果
  if len(result_str) > 0:

    return result_str
  # 3. 如果用戶沒(méi)有輸入內(nèi)容,返回 `字典中原有的值`
  else:

    return dict_value

07. LINUX 上的 Shebang 符號(hào)(#!)

  • #!這個(gè)符號(hào)叫做 Shebang 或者 Sha-bang
  • Shebang 通常在 Unix 系統(tǒng)腳本的中 第一行開(kāi)頭 使用
  • 指明 執(zhí)行這個(gè)腳本文件 的 解釋程序

使用 Shebang 的步驟

    1. 使用 which 查詢 python3 解釋器所在路徑
$ which python3

修改要運(yùn)行的 主 python 文件,在第一行增加以下內(nèi)容

#! /usr/bin/python3

修改 主 python 文件 的文件權(quán)限,增加執(zhí)行權(quán)限

$ chmod +x cards_main.py

在需要時(shí)執(zhí)行程序即可

./cards_main.py

關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python函數(shù)使用技巧總結(jié)》、《Python面向?qū)ο蟪绦蛟O(shè)計(jì)入門與進(jìn)階教程》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python字符串操作技巧匯總》、《Python編碼操作技巧總結(jié)》及《Python入門與進(jìn)階經(jīng)典教程

希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • Python break語(yǔ)句詳解

    Python break語(yǔ)句詳解

    這篇文章主要介紹了Python break語(yǔ)句的作用、使用方法,需要的朋友可以參考下
    2014-03-03
  • django框架基于模板 生成 excel(xls) 文件操作示例

    django框架基于模板 生成 excel(xls) 文件操作示例

    這篇文章主要介紹了django框架基于模板 生成 excel(xls) 文件操作,結(jié)合具體實(shí)例形式分析了Django框架基于模板生成excel的實(shí)現(xiàn)步驟與相關(guān)操作技巧,需要的朋友可以參考下
    2019-06-06
  • python 裝飾器的使用示例

    python 裝飾器的使用示例

    這篇文章主要介紹了python 裝飾器的使用示例,幫助大家更好的理解和使用python裝飾器,感興趣的朋友可以了解下
    2020-10-10
  • Python讀取Excel數(shù)據(jù)并生成圖表過(guò)程解析

    Python讀取Excel數(shù)據(jù)并生成圖表過(guò)程解析

    這篇文章主要介紹了Python讀取Excel數(shù)據(jù)并生成圖表過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • python迭代dict的key和value的方法

    python迭代dict的key和value的方法

    今天小編就為大家分享一篇python迭代dict的key和value的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-07-07
  • python 爬取學(xué)信網(wǎng)登錄頁(yè)面的例子

    python 爬取學(xué)信網(wǎng)登錄頁(yè)面的例子

    今天小編就為大家分享一篇python 爬取學(xué)信網(wǎng)登錄頁(yè)面的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-08-08
  • Python Tkinter對(duì)話框控件使用詳解

    Python Tkinter對(duì)話框控件使用詳解

    Tkinter中提供了三種對(duì)話框控件:文件選擇對(duì)話框、顏色選擇對(duì)話框和消息對(duì)話框。本文將具體為大家介紹一下這三種對(duì)話框的使用,需要的可以參考一下
    2022-01-01
  • Python設(shè)計(jì)模式之橋接模式原理與用法實(shí)例分析

    Python設(shè)計(jì)模式之橋接模式原理與用法實(shí)例分析

    這篇文章主要介紹了Python設(shè)計(jì)模式之橋接模式原理與用法,結(jié)合具體實(shí)例形式分析了Python橋接模式的相關(guān)概念、原理、定義及使用方法,需要的朋友可以參考下
    2019-01-01
  • python批量下載網(wǎng)站馬拉松照片的完整步驟

    python批量下載網(wǎng)站馬拉松照片的完整步驟

    這篇文章主要給大家介紹了關(guān)于利用python批量下載網(wǎng)站馬拉松照片的完整步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-12-12
  • python中的下劃線多種用法總結(jié)

    python中的下劃線多種用法總結(jié)

    在 Python 中,下劃線(underscore)有多種用法,它在不同的上下文中可以扮演不同的角色,本文將介紹python中的下劃線用法總結(jié),感興趣的朋友一起看看吧
    2024-05-05

最新評(píng)論