zoukankan      html  css  js  c++  java
  • Python

    前言

    • 参考的是慕课网提供的实战,自己编码
    • http://www.imooc.com/wiki/pythonlesson1/function2.html

    什么是模块化程序设计

    • 在进行程序设计时将一个大程序按照功能划分为若干小程序模块
    • 每个小程序模块完成一个确定的功能
    • 并在这些模块之间建立必要的联系,通过模块的互相协作完成整个功能

    自顶向下

    • 在设计较复杂的程序时,一般采用自顶向下的方法,将问题划分为几个部分,各个部分再进行细化,直到分解为较好解决问题为止
    • 采用模块化设计编写程序时,不是一开始就逐条编写程序代码
    • 而是首先用主程序、子程序等框架把软件的主要结构和流程描述出来
    • 以功能块为单位进行程序设计,实现其求解的方法称为模块化

    函数在模块化设计的作用

    • 利用函数,不仅可以实现程序的模块化,使得程序设计更加简单和直观,从而提高了程序的易读性和可维护性
    • 而且还可以把程序中经常用到的一些计算或操作编写成通用函数,以供随时调用

    实战

    功能简介

    实现一个通讯录管理程序,使用函数来实现程序,采用模块化的程序设计方法:

    • 划分通讯录程序的功能模块,使用函数实现相应的功能
    • 首先实现整体框架,然后再细化每个功能细节
    • 最终的程序由多个函数构成,每个函数实现一个单一的功能,整个程序的结构清晰

    通讯录功能简介

    通讯录包含若干联系人,每个联系人包括:姓名、地址、电话 3 项内容。程序提供 4 项基本功能:

    • 增加联系人: 用户输入姓名、地址、电话等信息,将信息保存在一个列表中
    • 列出联系人: 打印输出所有联系人的信息
    • 查询联系人: 用户输入联系人姓名,打印输出该联系人的信息
    • 删除联系人: 用户输入联系人姓名,从通讯录中删除该联系人

    主程序入口

    通过命令行界面实现以上功能,程序 addr-manage.py 运行时首先打印一个菜单

    C:> python addr-manage.py
    1. create person
    2. list all persons
    3. query person
    4. delete person
    5. quit
    Enter a number(1-5): 

    主程序包含以下功能

    数字选项功能描述
    1. create person 增加联系人
    2. list all persons 列出联系人
    3. query person 查询联系人
    4. delete person 删除联系人
    5. quit 退出通讯录程序

    用什么数据结构来描述一个联系人

    • 字典最佳
    • 因为联系人可能会有很多个属性
    • 假设联系人有三个属性
    姓名地址电话
    张三 南京 12306

    字典表示联系人

    {
        "name": "张三",
        "address": "南京",
        "phone": "12306"
    }

    那么这是一个联系人

    用什么数据结构来描述一个通讯录

    通讯录会有多个联系人,所以会有多个字典,可以通过列表来表示通讯录

    zhangSan = {'name': '张三', 'address': '南京', 'phone': '12306'}
    liSi = {'name': '李四', 'address': '北京', 'phone': '10086'}
    persons = [zhangSan, liSi]

    一个函数对应一个功能

    功能模块对应的函数
    增加联系人 create_person
    列出联系人 list_person
    查询联系人 query_person
    删除联系人 delete_person
    主控模块 main

    总的代码结构

    # 通讯录
    persons = []
    
    
    # 添加联系人
    def create_person():
        pass
    
    
    # 列出联系人
    def list_person():
        pass
    
    
    # 查出联系人
    def query_person():
        pass
    
    
    # 删除联系人
    def delete_person():
        pass
    
    
    # 主函数
    def main():
        pass
    
    
    main()

    主函数代码实现

    1. 获取用户输入的选择
    2. 根据选择执行对应的功能
    3. 不断重复第一步
    # 主函数
    def main():
        while True:
            # 获取用户输入
            input_str = input("1. create person
    "
                              "2. list all persons
    "
                              "3. query person
    "
                              "4. delete person
    "
                              "5. quit
    "
                              "Enter a number(1-5): "
                              )
    
            if input_str == "1":
                create_person()
            elif input_str == "2":
                list_person()
            elif input_str == "3":
                query_person()
            elif input_str == "4":
                delete_person()
            elif input_str == "5":
                break
            else:
                print("无效选择")

    添加联系人代码实现

    # 添加联系人
    def create_person():
        name = input("请输入姓名:")
        address = input("请输入地址:")
        phone = input("请输入手机:")
    
        if name and address and phone:
            person = {
                "name": name,
                "address": address,
                "phone": phone
            }
            persons.append(person)

    列出联系人代码实现

    # 列出联系人
    def list_person():
        for person in persons:
            print(person)

    查出联系人代码实现

    # 查出联系人
    def query_person():
        name = input("请输入需要查找的姓名:")
        for person in persons:
            if name == person["name"]:
                print(person)

    删除联系人代码实现

    # 删除联系人
    def delete_person():
        name = input("请输入需要查找的姓名:")
        for person in persons:
            if name == person["name"]:
                persons.remove(person)

    运行效果

    1. create person
    2. list all persons
    3. query person
    4. delete person
    5. quit
    Enter a number(1-5): 1
    请输入姓名:poloyy
    请输入地址:广州荔湾区
    请输入手机:13501111111
    
    1. create person
    2. list all persons
    3. query person
    4. delete person
    5. quit
    Enter a number(1-5): 2
    {'name': 'poloyy', 'address': '广州荔湾区', 'phone': '13501111111'}
    
    1. create person
    2. list all persons
    3. query person
    4. delete person
    5. quit
    Enter a number(1-5): 3
    请输入需要查找的姓名:poloyy
    {'name': 'poloyy', 'address': '广州荔湾区', 'phone': '13501111111'}
    
    1. create person
    2. list all persons
    3. query person
    4. delete person
    5. quit
    Enter a number(1-5): 4
    请输入需要查找的姓名:poloyy
    
    1. create person
    2. list all persons
    3. query person
    4. delete person
    5. quit
    Enter a number(1-5): 2
    
    1. create person
    2. list all persons
    3. query person
    4. delete person
    5. quit
    Enter a number(1-5): 5
    
    Process finished with exit code 0
  • 相关阅读:
    SSLZYC 洛谷P2055 假期的宿舍
    SSLZYC 2601 (洛谷P1756)【24题】飞行员配对方案问题
    SSLZYC POJ 3264 平衡的阵容
    SSLZYC 2432 面积最大
    SSLZYC 2433 文件名排序
    Structure of a C program: Preprocessor directives (#include <stdlib.h>, #define)
    Basic vim Commands
    UNIX Copying Files Remotely Examples(scp/pscp)
    ssh command in Linux with Example
    UNIX Copying a File
  • 原文地址:https://www.cnblogs.com/poloyy/p/15110297.html
Copyright © 2011-2022 走看看