Python學習之模塊化程序設計示例詳解

關於模塊化程序設計

什麼是模塊化程序設計?

程序設計的模塊化指的是在進行程序設計時,把一個大的程序功能劃分為若幹個小的程序模塊。每一個小程序模塊實現一個確定的功能,並且在這些小程序模塊實現的功能之間建立必要的聯系,通過各個小模塊之間的互相協作完成整個大功能實現的方法。

模塊化設計程序的方法?

  • 一般在針對實現比較復雜程序的情況下,采用的是自上而下的方法。將復雜的場景劃分為幾個部分,每一個部門再進行針對性的細化,直到分解為比較好的解決方案為止。
  • 采用模塊化設計程序,並不是一開始就逐條的編寫程序代碼,而是首先用主程序、子程序等框架把軟件的主要結構和流程描述出來,以功能劃分的模塊為單位進行程序設計。
  • 利用函數,不僅可以實現程序的模塊化,使得程序設計更加簡單和直觀,從而提高瞭程序的易讀性和可維護性,而且還可以把程序中經常用到的一些計算或操作編寫成通用函數,以供隨時調用。

該章節模擬一個水果倉庫管理程序。在前面章節中,程序的各項功能代碼全部集中在一個代碼段中,程序的結構不清晰。該章節使用函數來實現程序,采用模塊化的程序設計方法:

  • 劃分 水果倉庫 程序的功能模塊,使用函數實現相應的功能
  • 首先實現整體框架,然後再細化每個功能細節
  • 最終的程序由多個函數構成,每個函數實現一個單一的功能,整個程序的結構清晰

水果倉庫功能簡介

編寫程序 fruits_warehouse 模擬 水果倉庫 的一個簡單管理系統,水果倉庫 包含若幹水果,每種水果包括:名稱、重量、日期 3 項內容。程序提供 4 項基本功能:

  • 添加水果: 用戶輸入水果的名稱、重量、日期信息,將信息保存在一個列表中
  • 列出當前所有水果: 打印輸出當前所有水果的信息
  • 查詢水果: 用戶輸入水果的名稱,打印輸出該水果的信息
  • 刪除水果: 用戶輸入水果的名稱,刪除該水果的信息

通過命令行界面實現以上功能,程序 fruits_warehouse 運行時首先打印一個菜單,如下所示:

1: 添加水果信息
2: 顯示所有水果
3: 查詢水果信息
4: 刪除水果信息
5: 退出
請根據提示的數字 1-5 輸入要執行的操作:

所以我們定義一個 獲取選項的函數,如下:

def get_option():
    print('1: 添加水果信息')
    print('2: 顯示所有水果')
    print('3: 查詢水果信息')
    print('4: 刪除水果信息')
    print('5: 退出')
    option = input('請根據提示輸入要執行的操作: 數字 1-5 ')
    return option


get_option()

# >>> 執行結果如下:
# >>> 1: 添加水果信息
# >>> 2: 顯示所有水果
# >>> 3: 查詢水果信息
# >>> 4: 刪除水果信息
# >>> 5: 退出
# >>> 請根據提示的數字 1-5 輸入要執行的操作: 

主功能實現與程序入口

總共有 5 個選項,用戶輸入對應的數字選擇相應的功能,如下表所示:

數字選項 對應功能
1 : add_fruit 添加水果信息
2:search_all_fruits 列出當前所有水果信息
3:query_fruit 查詢水果信息
4:del_fruit 刪除水果信息
5:quit 退出

編寫對應的函數,這裡我們先寫出函數的定義,暫時使用 pass 占位,代碼如下

def add_fruit():			# 添加水果信息
    pass


def search_all_fruits():	# 列出當前所有水果信息
    pass


def query_fruit():			# 查詢水果信息
    pass


def del_fruit():			# 刪除水果信息
    pass


def main():					# 主程入口
    pass

接下來我們就實現以下 主程入口與獲取用戶的輸入

fruits =[] 					# 創建一個空列表 fruits,fruits 記錄所有水果的信息


def get_option():			# 獲取用戶輸入
    print('1: 添加水果信息')
    print('2: 顯示所有水果')
    print('3: 查詢水果信息')
    print('4: 刪除水果信息')
    print('5: 退出')
    option = input('請根據提示輸入要執行的操作: 數字 1-5 ')
    return option


def add_fruit():			# 添加水果信息
    pass


def search_all_fruits():	# 列出當前所有水果信息
    pass


def query_fruit():			# 查詢水果信息
    pass


def del_fruit():			# 刪除水果信息
    pass


def main():					# 主程入口
    while True:
        option = get_option()

        if option == '1':
            add_fruit()
        elif option == '2':
            search_all_fruits()
        elif option == '3':
            query_fruit()
        elif option == '4':
            ddel_fruit()
        elif option == '5':
            break
        else:
            print('輸入錯誤!請重新輸入!')
            
main()

實現添加功能

def add_fruit():                # 添加水果信息
    name = input('name: ')
    weight = input('weight: ')
    date = input('date: ')
    fruit = {'name': name, 'weight': weight, 'date': date}
    fruits.append(fruit)

實現列出所有信息功能

def search_all_fruits():        # 列出當前所有水果信息
    if len(fruits) == 0:
        print('**************')
        print('當前倉庫沒有水果')
        print('**************')
    else:
        for fruit in fruits:
            print(f'%s,%s,%s' % (fruit['name'], fruit['weight'], fruit['date']))

實現查詢信息功能

def query_fruit():              # 查詢水果信息
    name = input('name: ')
    if len(fruits) == 0:
        print('***************')
        print('當前倉庫沒有水果')
        print('***************')
    else:
        for fruit in fruits:
            if fruit['name'] == name:
                print(f'%s,%s,%s' % (fruit['name'], fruit['weight'], fruit['date']))

實現刪除信息功能

def del_fruit():                # 刪除水果信息
    name = input('name: ')
    if len(fruits) == 0:
        print('***************')
        print('當前倉庫沒有水果')
        print('***************')
    else:
        for fruit in fruits:
            if fruit['name'] == name:
                fruits.remove(fruit)
                break

完整程序如下

註意:這個完整程序的功能其實並不算完整,隻能說是實現瞭一個基礎功能;比如一個場景,當我們要查詢、刪除的水果並不在 fruits 列表 的時候,這裡並沒有做校驗,隻是校驗瞭當前水果列表是否存在水果(長度判斷)。

所以大傢可以自己動手完善一下。

# coding:utf-8

"""
    @Author:Neo
    @Date:2020/1/14
    @Filename:fruits_warehouse.py
    @Software:Pycharm
"""


fruits = []                     # 創建一個空列表 fruits,fruits 記錄所有水果的信息


def get_option():               # 獲取用戶輸入
    print('1: 添加水果信息')
    print('2: 顯示所有水果')
    print('3: 查詢水果信息')
    print('4: 刪除水果信息')
    print('5: 退出')
    option = input('請根據提示 數字 1-5 輸入要執行的操作: ')
    return option


def add_fruit():                # 添加水果信息
    name = input('name: ')
    weight = input('weight: ')
    date = input('date: ')
    fruit = {'name': name, 'weight': weight, 'date': date}
    fruits.append(fruit)
    print(fruits)


def search_all_fruits():        # 列出當前所有水果信息
    if len(fruits) == 0:
        print('              ')
        print('**************')
        print('當前倉庫沒有水果')
        print('**************')
        print('              ')
    else:
        for fruit in fruits:
            print(f'%s,%s,%s' % (fruit['name'], fruit['weight'], fruit['date']))



def query_fruit():              # 查詢水果信息
    name = input('name: ')
    if len(fruits) == 0:
        print('              ')
        print('**************')
        print('當前倉庫沒有水果')
        print('**************')
        print('              ')
    else:
        for fruit in fruits:
            if fruit['name'] == name:
                print(f'%s,%s,%s' % (fruit['name'], fruit['weight'], fruit['date']))


def del_fruit():                # 刪除水果信息
    name = input('name: ')
    if len(fruits) == 0:
        print('              ')
        print('**************')
        print('當前倉庫沒有水果')
        print('**************')
        print('              ')
    else:
        for fruit in fruits:
            if fruit['name'] == name:
                fruits.remove(fruit)
                break


def main():  # 主程入口
    while True:
        option = get_option()

        if option == '1':
            add_fruit()
        elif option == '2':
            search_all_fruits()
        elif option == '3':
            query_fruit()
        elif option == '4':
            del_fruit()
        elif option == '5':
            break
        else:
            print('輸入錯誤!請重新輸入!')


main()

以上就是Python學習之模塊化程序設計示例詳解的詳細內容,更多關於Python模塊化程序設計的資料請關註WalkonNet其它相關文章!

推薦閱讀: