展开菜单
首页 精品内容 本月促销 装机必备 Windows PDF教程 macOS软件 IOS软件 Android AI 专题
全部分类

当前位置:

首页 > 编程开发 > Python函数的自定义使用方法

Python函数的自定义使用方法

一.应用:学员管理系统1.1系统简介需求:进入系统显示系统功能界面,功能如下:1、添加学员2、删除学员3、修改学员信息4、查询学员信息5、显示所有学员信息6、退出系统系统共6个功能,用户根据自己需求选取。1.2步骤分析显示功能界面用户输入功能序号根据用户输入的功能序号,执行不同的功能(函数)3.1定义函数3.2调用函数1.3需求实现1.3.1显示功能界面定义函数print_info,负责显示系统功能。defprint_info():print('-'*20)print('欢迎登录学

本文目录

    一. 应用:学员管理系统

    1.1 系统简介

    需求:进入系统显示系统功能界面,功能如下:

    • 1、添加学员

    • 2、删除学员

    • 3、修改学员信息

    • 4、查询学员信息

    • 5、显示所有学员信息

    • 6、退出系统

    系统共6个功能,用户根据自己需求选取。

    1.2 步骤分析

    1. 显示功能界面

    2. 用户输入功能序号

    3. 根据用户输入的功能序号,执行不同的功能(函数)
      3.1 定义函数
      3.2 调用函数

    1.3 需求实现

    1.3.1 显示功能界面

    定义函数print_info,负责显示系统功能。

    def print_info():
        print('-' * 20)
        print('欢迎登录学员管理系统')
        print('1: 添加学员')
        print('2: 删除学员')
        print('3: 修改学员信息')
        print('4: 查询学员信息')
        print('5: 显示所有学员信息')
        print('6: 退出系统')
        print('-' * 20)
        
        
    print_info()
    1.3.2 用户输入序号,选择功能
    user_num = input('请选择您需要的功能序号:')
    1.3.3 根据用户选择,执行不同的功能
    if user_num == '1':
        print('添加学员')
    elif user_num == '2':
        print('删除学员')
    elif user_num == '3':
        print('修改学员信息')
    elif user_num == '4':
        print('查询学员信息')
    elif user_num == '5':
        print('显示所有学员信息')
    elif user_num == '6':
        print('退出系统')

    工作中,需要根据实际需求调优代码。

    1. 用户选择系统功能的代码需要循环使用,直到用户主动退出系统。

    2. 如果用户输入1-6以外的数字,需要提示用户。

    while True:
        # 1. 显示功能界面
        print_info()
        
        # 2. 用户选择功能
        user_num = input('请选择您需要的功能序号:')
    
        # 3. 根据用户选择,执行不同的功能
        if user_num == '1':
            print('添加学员')
        elif user_num == '2':
            print('删除学员')
        elif user_num == '3':
            print('修改学员信息')
        elif user_num == '4':
            print('查询学员信息')
        elif user_num == '5':
            print('显示所有学员信息')
        elif user_num == '6':
            print('退出系统')
        else:
            print('输入错误,请重新输入!!!')
    1.3.4 定义不同功能的函数

    所有功能函数都是操作学员信息,所有存储所有学员信息应该是一个全局变量,数据类型为列表。

    info = []
    1.3.4.1 添加学员
    • 需求分析

    1. 接收用户输入学员信息,并保存

    2. 判断是否添加学员信息
      2.1 如果学员姓名已经存在,则报错提示
      2.2 如果学员姓名不存在,则准备空字典,将用户输入的数据追加到字典,再列表追加字典数据

    3. 对应的if条件成立的位置调用该函数

    • 代码实现

    def add_info():
        """ 添加学员 """
        # 接收用户输入学员信息
        new_id = input('请输入学号:')
        new_name = input('请输入姓名:')
        new_tel = input('请输入手机号:')
        
    
        # 声明info是全局变量
        global info
    
        # 检测用户输入的姓名是否存在,存在则报错提示
        for i in info:
            if new_name == i['name']:
                print('该用户已经存在!')
                return
    
        # 如果用户输入的姓名不存在,则添加该学员信息
        info_dict = {}
        
        # 将用户输入的数据追加到字典
        info_dict['id'] = new_id
        info_dict['name'] = new_name
        info_dict['tel'] = new_tel
        
        # 将这个学员的字典数据追加到列表
        info.append(info_dict)
        
        print(info)
    1.3.4.2 删除学员
    • 需求分析

    按用户输入的学员姓名进行删除

    1. 用户输入目标学员姓名

    2. 检查这个学员是否存在
      2.1 如果存在,则列表删除这个数据
      2.2 如果不存在,则提示“该用户不存在”

    3. 对应的if条件成立的位置调用该函数

    • 代码实现

    # 删除学员
    def del_info():
        """删除学员"""
        # 1. 用户输入要删除的学员的姓名
        del_name = input('请输入要删除的学员的姓名:')
    
        global info
        # 2. 判断学员是否存在:如果输入的姓名存在则删除,否则报错提示
        for i in info:
            if del_name == i['name']:
                info.remove(i)
                break
        else:
            print('该学员不存在')
    
        print(info)
    1.3.4.3 修改学员信息
    • 需求分析

    1. 用户输入目标学员姓名

    2. 检查这个学员是否存在
      2.1 如果存在,则修改这位学员的信息,例如手机号
      2.2 如果不存在,则报错

    3. 对应的if条件成立的位置调用该函数

    • 代码实现

    # 修改函数
    def modify_info():
        """修改函数"""
        # 1. 用户输入要修改的学员的姓名
        modify_name = input('请输入要修改的学员的姓名:')
    
        global info
        # 2. 判断学员是否存在:如果输入的姓名存在则修改手机号,否则报错提示
        for i in info:
            if modify_name == i ['name']:
                i['tel'] = input('请输入新的手机号:')
                break
        else:
            print('该学员不存在')
        
        print(info)
    1.3.4.4 查询学员信息
    • 需求分析

    1. 用户输入目标学员姓名

    2. 检查学员是否存在
      2.1 如果存在,则显示这个学员的信息
      2.2 如果不存在,则报错提示

    3. 对应的if条件成立的位置调用该函数

    • 代码实现

    # 查询学员
    def search_info():
        """查询学员"""
        # 1. 输入要查找的学员姓名:
        search_name = input('请输入要查找的学员姓名:')
    
        global info
        # 2. 判断学员是否存在:如果输入的姓名存在则显示这位学员信息,否则报错提示
        for i in info:
            if search_name == i['name']:
                print('查找到的学员信息如下:----------')
                print(f"该学员的学号是{i['id']}, 姓名是{i['name']}, 手机号是{i['tel']}")
                break
        else:
            print('该学员不存在')
    1.3.4.5 显示所有学员信息
    • 需求分析

    打印所有学员信息

    • 代码实现

    # 显示所有学员信息
    def print_all():
        """ 显示所有学员信息 """
        print('学号\t姓名\t手机号')
        for i in info:
            print(f'{i["id"]}\t{i["name"]}\t{i["tel"]}')
    1.3.4.6 退出系统

    在用户输入功能序号6的时候要退出系统,代码如下:

    ......
        elif user_num == '6':
            exit_flag = input('确定要退出吗?yes or no')
            if exit_flag == 'yes':
                break

    二. 递归

    2.1 递归的应用场景

    递归是一种编程思想,应用场景:

    1. 在我们日常开发中,如果要遍历一个文件夹下面所有的文件,通常会使用递归来实现;

    2. 在后续的算法课程中,很多算法都离不开递归,例如:快速排序。

    2.1.1 递归的特点
    • 函数内部自己调用自己

    • 必须有出口

    2.2 应用:3以内数字累加和

    • 代码

    # 3 + 2 + 1
    def sum_numbers(num):
        # 1.如果是1,直接返回1 -- 出口
        if num == 1:
            return 1
        # 2.如果不是1,重复执行累加并返回结果
        return num + sum_numbers(num-1)
    
    
    sum_result = sum_numbers(3)
    # 输出结果为6
    print(sum_result)
    • 执行结果

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QST6841K-1597498815746)(03-函数加强.assets/1.png)]

    三. lambda 表达式

    3.1 lambda的应用场景

    如果一个函数有一个返回值,并且只有一句代码,可以使用 lambda简化。

    3.2 lambda语法

    lambda

    注意

    • lambda表达式的参数可有可无,函数的参数在lambda表达式中完全适用。

    • lambda表达式能接收任何数量的参数但只能返回一个表达式的值。

    快速入门
    # 函数
    def fn1():
        return 200
    
    
    print(fn1)
    print(fn1())
    
    
    # lambda表达式
    fn2 = lambda: 100
    print(fn2)
    print(fn2())

    注意:直接打印lambda表达式,输出的是此lambda的内存地址

    3.3 示例:计算a + b

    3.3.1 函数实现
    def add(a, b):
        return a + b
    
    
    result = add(1, 2)
    print(result)

    思考:需求简单,是否代码多?

    3.3.2 lambda实现
    fn1 = lambda a, b: a + b
    print(fn1(1, 2))

    3.4 lambda的参数形式

    3.4.1.无参数
    fn1 = lambda: 100
    print(fn1())
    3.4.2.一个参数
    fn1 = lambda a: a
    print(fn1('hello world'))
    3.4.3.默认参数
    fn1 = lambda a, b, c=100: a + b + c
    print(fn1(10, 20))
    3.4.4.可变参数:*args
    fn1 = lambda *args: args
    print(fn1(10, 20, 30))

    注意:这里的可变参数传入到lambda之后,返回值为元组。

    3.4.5.可变参数:**kwargs
    fn1 = lambda **kwargs: kwargs
    print(fn1(name='python', age=20))

    3.5 lambda的应用

    3.5.1. 带判断的lambda
    fn1 = lambda a, b: a if a > b else b
    print(fn1(1000, 500))
    3.5.2. 列表数据按字典key的值排序
    students = [
        {'name': 'TOM', 'age': 20},
        {'name': 'ROSE', 'age': 19},
        {'name': 'Jack', 'age': 22}
    ]
    
    # 按name值升序排列
    students.sort(key=lambda x: x['name'])
    print(students)
    
    # 按name值降序排列
    students.sort(key=lambda x: x['name'], reverse=True)
    print(students)
    
    # 按age值升序排列
    students.sort(key=lambda x: x['age'])
    print(students)

    四. 高阶函数

    把函数作为参数传入,这样的函数称为高阶函数,高阶函数是函数式编程的体现。函数式编程就是指这种高度抽象的编程范式。

    4.1 体验高阶函数

    在Python中,abs()函数可以完成对数字求绝对值计算。

    abs(-10)  # 10

    round()函数可以完成对数字的四舍五入计算。

    round(1.2)  # 1
    round(1.9)  # 2

    需求:任意两个数字,按照指定要求整理数字后再进行求和计算。

    • 方法1

    def add_num(a, b):
        return abs(a) + abs(b)
    
    
    result = add_num(-1, 2)
    print(result)  # 3
    • 方法2

    def sum_num(a, b, f):
        return f(a) + f(b)
    
    
    result = sum_num(-1, 2, abs)
    print(result)  # 3

    注意:两种方法对比之后,发现,方法2的代码会更加简洁,函数灵活性更高。

    函数式编程大量使用函数,减少了代码的重复,因此程序比较短,开发速度较快。

    4.2 内置高阶函数

    4.2.1 map()

    map(func, lst),将传入的函数变量func作用到lst变量的每个元素中,并将结果组成新的列表(Python2)/迭代器(Python3)返回。

    需求:计算list1序列中各个数字的2次方。

    list1 = [1, 2, 3, 4, 5]
    
    
    def func(x):
        return x ** 2
    
    
    result = map(func, list1)
    
    print(result)  # 
    print(list(result))  # [1, 4, 9, 16, 25]
    4.2.2 reduce()

    reduce(func,lst),其中func必须有两个参数。每次func计算的结果继续和序列的下一个元素做累积计算。

    注意:reduce()传入的参数func必须接收2个参数。

    需求:计算list1序列中各个数字的累加和。

    import functools
    
    list1 = [1, 2, 3, 4, 5]
    
    
    def func(a, b):
        return a + b
    
    
    result = functools.reduce(func, list1)
    
    print(result)  # 15
    4.2.3 filter()

    filter(func, lst)函数用于过滤序列, 过滤掉不符合条件的元素, 返回一个 filter 对象。如果要转换为列表, 可以使用 list() 来转换。

    list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    
    
    def func(x):
        return x % 2 == 0
    
    
    result = filter(func, list1)
    
    print(result)  # 
    print(list(result))  # [2, 4, 6, 8, 10]

    五. 总结

    • 递归

    • 函数内部自己调用自己

    • 必须有出口

    • lambda

    • 语法

    lambda 参数列表:
    • lambda的参数形式

    • 无参数

    lambda:
    • 一个参数

    lambda 参数:
    • 默认参数

    lambda key=value:
    • 不定长位置参数

    lambda *args:
    • 不定长关键字参数

    lambda **kwargs:
    • 高阶函数

    • 作用:把函数作为参数传入,化简代码

    • 内置高阶函数

    • map()

    • reduce()

    • filter()

    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
    作者最新文章
    编程开发 Python
    相关文章 更多
    精品专题 更多
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    PDF教程

    正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

    macOS软件

    正软商城macOS软件专区,精选适用于Mac电脑的办公、设计、影音、效率、开发和系统工具,提供软件功能介绍、macOS兼容版本、正版授权及购买下载服务。

    IOS软件

    正软商城iOS软件专区,精选适用于iPhone和iPad的办公、学习、影音、设计、效率及AI应用,提供功能介绍、适用设备、系统要求和正版获取方式等信息。

    AI

    正软商城AI软件专区,汇集AI写作、AI绘画、AI视频、AI办公、AI编程、AI翻译、智能客服和数据分析等人工智能工具,提供功能介绍、适用平台、收费方式及正版购买信息。

    Mac软件 更多
    Aperty macOS版
    Aperty macOS版

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    火山引擎 网页版
    火山引擎 网页版

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    立刻MV 网页版
    立刻MV 网页版

    立刻MV 面向音乐人、内容创作者和品牌团队,帮助用户低成本完成歌曲 MV、歌词视频、AI 分镜、图生视频与最终合成。

    蛙蛙写作 网页版
    蛙蛙写作 网页版

    蛙蛙写作 AI 创作工具,覆盖小说、剧本、文案,一键生成文稿,打通文字转视频全流程,高效解决创作难题。

    讯飞智作 网页版
    讯飞智作 网页版

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    超级简历WonderCV 网页版
    超级简历WonderCV 网页版

    超级简历WonderCV是面向应届生和AI小白的智能求职平台,覆盖简历、面试与职业规划。

    音述AI 网页版
    音述AI 网页版

    音述AI,是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区。

    AionClaw macOS版
    AionClaw macOS版

    AionClaw 是可在桌面端运行的任务型 AI 助手,通过数字专家与技能市场组合办公、创作、数据和开发能力。

    Loomy macOS版
    Loomy macOS版

    Loomy 是科大讯飞推出的桌面 AI 助手,可通过对话、任务与工作目录协助处理办公、内容创作和资料整理。

    AirBuddy 3 macOS版
    AirBuddy 3 macOS版

    AirBuddy 3 是面向 macOS 的蓝牙外设增强工具,可集中查看 AirPods、Beats 与苹果设备电量,提供快速连接、播放控制、电量提醒、桌面小组件和多台 Mac 外设接力等功能。

    AirServer macOS版
    AirServer macOS版

    AirServer macOS版可把 Mac 转换为无线投屏接收端,通过 AirPlay 或 Google Cast 接收手机、平板和电脑画面,并支持多设备同时连接、高清镜像及会话录制,适合家庭娱乐、课堂教学、会议演示和应用展示。

    AnyDesk macOS版
    AnyDesk macOS版

    AnyDesk macOS版是一款适用于远程办公、设备维护和客户支持的远程桌面工具,可连接并操作异地计算机,支持文件传输、无人值守访问、会话权限控制及跨平台协作。

    WINDOWS 更多
    讯飞绘文 网页版
    讯飞绘文 网页版

    讯飞绘文网页版是科大讯飞推出的AI图文创作与内容运营工具,覆盖热点选题、文章生成、稿件校对、智能配图、排版发布和数据复盘等环节,适合自媒体创作者及内容团队在线使用。

    Maya(Autodesk Maya) Windows版
    Maya(Autodesk Maya) Windows版

    Autodesk Maya 是面向影视、电视、动画和游戏行业的专业三维制作软件,集多边形与 NURBS 建模、角色绑定、关键帧和动作捕捉动画、Bifrost 特效模拟、材质开发及 Arnold 渲染于一体,

    Aperty Windows版
    Aperty Windows版

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    火山引擎 网页版
    火山引擎 网页版

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    立刻MV 网页版
    立刻MV 网页版

    立刻MV 面向音乐人、内容创作者和品牌团队,帮助用户低成本完成歌曲 MV、歌词视频、AI 分镜、图生视频与最终合成。

    蛙蛙写作 网页版
    蛙蛙写作 网页版

    蛙蛙写作 AI 创作工具,覆盖小说、剧本、文案,一键生成文稿,打通文字转视频全流程,高效解决创作难题。

    讯飞智作 网页版
    讯飞智作 网页版

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    超级简历WonderCV 网页版
    超级简历WonderCV 网页版

    超级简历WonderCV是面向应届生和AI小白的智能求职平台,覆盖简历、面试与职业规划。

    音述AI 网页版
    音述AI 网页版

    音述AI,是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区。

    AionClaw Windows版
    AionClaw Windows版

    AionClaw 是可在桌面端运行的任务型 AI 助手,通过数字专家与技能市场组合办公、创作、数据和开发能力。

    Loomy Windows版
    Loomy Windows版

    Loomy 是科大讯飞推出的桌面 AI 助手,可通过对话、任务与工作目录协助处理办公、内容创作和资料整理。

    AirServer Windows版
    AirServer Windows版

    AirServer Windows版可把电脑变成AirPlay、Google Cast和Miracast无线投屏接收端,适合会议演示、课堂教学及家庭大屏分享。发送设备通常无需另装客户端,并可同时接收和智能排列多个镜像会话。