当前位置:首页>java>Day5:函数,你的代码复印机!写一次用一万次

Day5:函数,你的代码复印机!写一次用一万次

  • 2026-10-12 13:00:51
Day5:函数,你的代码复印机!写一次用一万次

还在复制粘贴代码?函数让你一键生成成绩单、写评语、发通知!

一、函数:你的代码模板

函数就是把重复代码打包,随时调用。

    1.1 最简单的函数

    # 定义函数 - 就像创建一个新工具def 打印问候():                 # def是定义函数的关键字print("您好!欢迎使用数字编程。")   # 函数体,要缩进4个空格print("今天是2026年2月4日")# 使用函数 - 就像使用这个工具打印问候()  # 第一次调用打印问候()  # 第二次调用打印问候()  # 第三次调用

    代码解释:

    • def:定义函数的关键字,告诉Python"我要创建一个新函数"

    • 打印问候:函数名,你自己取的名字,要见名知意

    • ():括号里可以放参数,这个例子没有参数

    • ::冒号表示函数定义的开始

    • 缩进:Python用缩进表示代码块,函数体必须缩进

    1.2 带参数的函数

    def 生成通知(老师姓名, 班级, 日期):  # 括号里的就是参数# f-string格式化字符串,把变量嵌入到文本中    通知 = f"""    【会议通知】    尊敬的{老师姓名}老师:    请于{日期}参加{班级}家长会。    教务处    {日期}    """print(通知)# 给不同老师发通知 - 每次调用传入不同参数生成通知("张老师", "三年级二班", "2月5日")生成通知("李老师", "五年级一班", "2月5日")

    代码解释:

    • 老师姓名, 班级, 日期:函数的三个参数,调用时必须提供

    • f""" """:多行f-string,可以包含换行符

    • {老师姓名}:在f-string中嵌入变量的方法

    • 参数就像填空题:每次调用填入不同的值

    二、实战案例:教师常用函数

    2.1 成绩分析函数

    def 分析成绩(学生姓名, 成绩列表):"""分析学生成绩,返回统计结果"""# sum()求和,len()获取列表长度    总分 = sum(成绩列表)    平均分 = 总分 / len(成绩列表)    最高分 = max(成绩列表)  # max()找最大值    最低分 = min(成绩列表)  # min()找最小值# if-elif-else判断成绩等级if 平均分 >= 90:        评价 = "优秀"elif 平均分 >= 80:        评价 = "良好"elif 平均分 >= 60:        评价 = "及格"else:        评价 = "不及格"# return返回结果给调用者return {"姓名": 学生姓名,"总分": 总分,"平均分": round(平均分, 1),  # round()四舍五入,保留1位小数"最高分": 最高分,"最低分": 最低分,"评价": 评价    }# 使用示例小明成绩 = [85, 92, 78, 90]  # 列表,包含4科成绩结果 = 分析成绩("小明", 小明成绩)  # 调用函数,传入参数print(f"{结果['姓名']}:平均分{结果['平均分']},评价:{结果['评价']}")

    代码解释:

    • """三引号""":函数文档字符串,说明函数作用

    • sum()、len()、max()、min():Python内置函数

    • return:函数执行完后返回结果

    • {}:返回一个字典,包含多个键值对

    • round(平均分, 1):四舍五入到1位小数

    • 结果['姓名']:从字典中获取键对应的值

    2.2 批量生成评语

    def 生成评语(学生姓名, 分数, 学科="语文"):"""根据分数生成学科评语,学科有默认值"""# 根据分数范围判断表现if 分数 >= 90:        表现 = "表现优异,基础知识扎实"        建议 = "继续保持,可挑战更高难度内容"elif 分数 >= 80:        表现 = "表现良好,掌握基本知识点"        建议 = "加强应用题练习"elif 分数 >= 60:        表现 = "基本掌握知识点"        建议 = "需要多做基础练习"else:        表现 = "需要加强学习"        建议 = "建议课后单独辅导"# 返回格式化后的评语    评语 = f"""    {学生姓名}同学{学科}成绩:{分数}分    学习表现:{表现}    改进建议:{建议}    """return 评语# 批量生成 - 使用for循环处理多个学生学生列表 = [    ("张三", 85, "数学"),  # 元组,包含学生信息    ("李四", 92, "数学"),    ("王五", 78, "数学")]for 学生 in 学生列表:  # 遍历学生列表    评语 = 生成评语(学生[0], 学生[1], 学生[2])  # 学生[0]是姓名,[1]是分数,[2]是学科print(评语)print("-" * 30)  # 打印分隔线

    代码解释:

    • 学科="语文":默认参数,调用时不提供则使用默认值

    • 学生列表:列表包含多个元组,每个元组是一个学生的信息

    • for 学生 in 学生列表::遍历列表中的每个元素

    • 学生[0]:元组的索引访问,0是第一个元素

    • "-" * 30:字符串乘法,重复30次"-"

    2.3 公文格式函数

    def 生成公文(标题, 正文, 发文单位="教育局", 文号="2023年001号"):"""生成标准格式公文,有默认参数"""    公文 = f"""    {发文单位}    {发文单位[:2]}发〔{文号}〕  # 发文单位[:2]取前两个字符    {'*' * 40}              关于{标题}的通知    各相关单位:    {正文}    特此通知。                     {发文单位}                     {文号}    """return 公文# 使用示例通知正文 = """为加强校园安全管理,决定开展校园安全检查。检查时间:2023年10月20日-11月20日请各单位做好准备。"""公文 = 生成公文("开展校园安全检查工作", 通知正文)print(公文)# 也可以指定发文单位和文号公文2 = 生成公文("表彰优秀教师", "表彰决定正文...", "区教育局", "2023年002号")

    代码解释:

    • 发文单位[:2]:字符串切片,取前两个字符

    • 默认参数让函数更灵活,可以指定也可以使用默认值

    • 调用时可以按顺序传参,也可以指定参数名传参

    三、办公自动化实战

    3.1 会议纪要生成器

    def 生成会议纪要(会议主题, 时间, 地点, 参会人员, 决议事项):"""生成标准会议纪要"""    纪要 = f"""    会议纪要    会议主题:{会议主题}    会议时间:{时间}    会议地点:{地点}    参会人员:    """# 添加参会人员 - enumerate给列表元素编号for i, 人员 in enumerate(参会人员, 1):  # 从1开始编号        纪要 += f"    {i}. {人员}\n"# += 字符串追加    纪要 += f"""    决议事项:    """# 添加决议事项 - items()获取字典的键值对for 事项, 内容 in 决议事项.items():        纪要 += f"    {事项}:{内容}\n"    纪要 += f"""    记录人:办公室    发文人:{时间}    """return 纪要# 使用示例参会人员 = ["张校长", "李主任", "王科长", "赵老师"]决议事项 = {"安全责任": "明确各部门安全职责","隐患排查": "本周完成全校排查","应急预案": "修订完善应急预案"}纪要 = 生成会议纪要("校园安全工作会议", "2026年2月4日", "行政楼301", 参会人员, 决议事项)print(纪要)# 保存到文件with open("会议纪要.txt", "w", encoding="utf-8") as f:    f.write(纪要)print("已保存到文件:会议纪要.txt")

    代码解释:

    • enumerate(参会人员, 1):给列表元素编号,从1开始

    • +=:字符串追加运算符

    • .items():字典方法,返回键值对

    • with open() as f::文件操作,自动关闭文件

    • encoding="utf-8":指定编码,防止中文乱码

    3.2 文件批量处理函数

    import os  # 导入操作系统模块def 批量重命名文件(文件夹路径, 新前缀):"""批量重命名文件夹中的文件"""# 获取文件夹中所有文件 - listdir列出目录内容    所有文件 = os.listdir(文件夹路径)print(f"找到{len(所有文件)}个文件")  # len()获取文件数量for i, 原文件名 in enumerate(所有文件, 1):# 分离文件名和扩展名 - splitext分割扩展名        文件名, 扩展名 = os.path.splitext(原文件名)# 生成新文件名 - :03d表示3位数字,不足补0        新文件名 = f"{新前缀}_{i:03d}{扩展名}"# 构建完整路径 - join连接路径        旧路径 = os.path.join(文件夹路径, 原文件名)        新路径 = os.path.join(文件夹路径, 新文件名)# 重命名文件 - rename修改文件名        os.rename(旧路径, 新路径)print(f"重命名:{原文件名} -> {新文件名}")print("批量重命名完成!")# 使用示例(请先创建测试文件夹)测试文件夹 = "test_files"if os.path.exists(测试文件夹):  # exists检查路径是否存在    批量重命名文件(测试文件夹, "学生档案")else:print(f"请先创建文件夹:{测试文件夹}")

    代码解释:

    • import os:导入操作系统模块,用于文件操作

    • os.listdir():列出指定目录下的所有文件和文件夹

    • os.path.splitext():分割文件名和扩展名

    • os.path.join():安全地连接路径,自动处理斜杠

    • os.rename():重命名文件或移动文件

    • os.path.exists():检查路径是否存在

    • :03d:格式化数字为3位数,不足补0

    四、今日核心要点

    1. 定义函数:def 函数名(参数): 创建可重用代码块

    2. 函数参数:可以传入数据,让函数处理不同内容

    3. 默认参数:def 函数(参数=默认值) 让调用更灵活

    4. 返回值:return 结果 函数处理完返回数据

    5. 函数文档:"""说明""" 解释函数作用和参数

    6. 调用函数:函数名(参数) 使用已定义的函数

    五、明日预告

    明天学习 字典,让你秒查学生信息、管理档案!

    用代码把重复劳动变没,把摸鱼时间变多!

    下期更新:明天下午6点,字典实战教程,继续我们的Python摸鱼之旅!
    回复"Py-Day5"获取完整代码文件

    最新文章

    随机文章