Python学习之模块化程序设计示例详解

 更新时间:2022年03月07日 10:04:05   作者:渴望力量的哈士奇  
程序设计的模块化指的是在进行程序设计时,把一个大的程序功能划分为若干个小的程序模块。每一个小程序模块实现一个确定的功能,并且在这些小程序模块实现的功能之间建立必要的联系。本文将利用示例详细介绍一下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模块化程序设计的资料请关注脚本之家其它相关文章!

相关文章

  • python控制台中实现进度条功能

    python控制台中实现进度条功能

    这篇文章主要介绍了python控制台中实现进度条功能的方法,想要了解的朋友可以参考一下
    2015-11-11
  • Python之如何调整图片的文件大小

    Python之如何调整图片的文件大小

    这篇文章主要介绍了Python之如何调整图片的文件大小问题,具有很好的参考价值,希望对大家有所帮助。
    2023-03-03
  • python中h5py开源库的使用样例详解

    python中h5py开源库的使用样例详解

    这篇文章主要介绍了python中的h5py开源库的使用,本文只是简单的对h5py库的基本创建文件,数据集和读取数据的方式进行介绍,需要的朋友可以参考下
    2022-05-05
  • python保存图片时如何和原图大小一致

    python保存图片时如何和原图大小一致

    这篇文章主要介绍了python保存图片时如何和原图大小一致问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • Python集合add()函数使用详解

    Python集合add()函数使用详解

    python中add()方法用于给集合添加元素,如果添加的元素在集合中已存在,则不执行任何操作,本文将给大家介绍一下Python集合add()函数使用方法,感兴趣的小伙伴跟着小编一起来看看吧
    2023-07-07
  • 跟老齐学Python之让人欢喜让人忧的迭代

    跟老齐学Python之让人欢喜让人忧的迭代

    跟一些比较牛X的程序员交流,经常听到他们嘴里冒出一个不标准的英文单词,而loop、iterate、traversal和recursion如果不在其内,总觉得他还不够牛X。当让,真正牛X的绝对不会这么说的,他们只是说“循环、迭代、遍历、递归”,然后再问“这个你懂吗?”。
    2014-10-10
  • Tkinter canvas的画布参数,删除组件,添加垂直滚动条详解

    Tkinter canvas的画布参数,删除组件,添加垂直滚动条详解

    这篇文章主要介绍了python tkinter 画布参数,删除组件,添加垂直滚动条使用实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2021-10-10
  • 如何利用Python监控别人的网站

    如何利用Python监控别人的网站

    这篇文章主要为大家详细介绍了如何利用Python实现监控别人的网站,这样还可以详细了解你的竞争对手网站,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-05-05
  • python中extend函数举例详解以及对比

    python中extend函数举例详解以及对比

    Python中的extend函数是用于将一个列表的元素添加到另一个列表中,它会将第一个列表中的元素逐个添加到第二个列表的末尾,这篇文章主要给大家介绍了关于python中extend函数举例详解以及对比的相关资料,需要的朋友可以参考下
    2024-03-03
  • 关于DataFrame中某列值的替换map(dict)

    关于DataFrame中某列值的替换map(dict)

    这篇文章主要介绍了关于DataFrame中某列值的替换map(dict),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02

最新评论