作者:中文编程倡导者—— 李金雨
联系方式:wbtm2718@qq.com
系列:python中文编程入门教程
** 核心理念: AI时代必须使用中文编程,母语编程阅读效率极高"
第7篇:功能——打造你的工具箱
开篇引入
本课目标
- 理解什么是功能(函数)
- 掌握如何定义功能
- 掌握如何使用输入项(参数)
- 掌握如何使用输出结果(返回值)
- 理解默认参数值的使用
- 理解多个输入项的处理
- 理解功能调用功能
- 了解常用的内置功能
生活场景引入
同学们,在日常生活中,我们经常使用各种工具来完成特定的任务:
- 使用锤子来钉钉子
- 使用螺丝刀来拧螺丝
- 使用计算器来进行计算
- 使用洗衣机来洗衣服
在Python中,函数就像这些工具一样,是用来完成特定任务的代码块。通过函数,我们可以将代码组织成可重用的模块,提高代码的可读性和复用性。
预期成果展示
在本课结束时,你将能够:
- 定义自己的函数
- 给函数传递参数
- 从函数获取返回值
- 使用默认参数
- 编写接受多个参数的函数
- 让函数调用其他函数
- 使用内置函数
- 编写一个数学工具箱程序
概念讲解
1. 什么是功能(函数)
函数是一段完成特定任务的代码块,它可以接受输入参数,执行特定的操作,然后返回结果。
生活例子:
- 函数就像工具:锤子、螺丝刀、计算器
- 输入项:给工具的原材料
- 输出结果:工具加工后的成品
- 内置功能:工具箱里自带的常用工具
代码示例:
# 定义一个简单的函数def打招呼():"""打招呼功能"""print("你好,欢迎学习Python!")# 调用函数打招呼()2. 定义功能(def)
在Python中,我们使用def关键字来定义函数。
基本结构:
def函数名(参数1,参数2,...):"""函数的说明文档"""# 函数体# 执行的代码return返回值生活例子:
- 定义一个计算面积的函数
- 定义一个打印问候语的函数
- 定义一个判断是否为质数的函数
代码示例:
# 定义一个计算面积的函数def计算面积(长,宽):"""计算长方形的面积"""面积=长*宽return面积# 定义一个打印问候语的函数def问候(姓名):"""向指定的人打招呼"""print(f"你好,{姓名}!")# 调用函数面积=计算面积(5,3)print("长方形的面积是:",面积)问候("小明")3. 输入项(参数)
参数是函数接收的输入值,它们在函数定义时被指定,在函数调用时被传递。
生活例子:
- 计算面积时需要长和宽
- 打印问候语时需要姓名
- 计算BMI时需要身高和体重
代码示例:
# 带参数的函数def计算BMI(身高,体重):"""计算BMI指数"""bmi=体重/(身高**2)returnbmi# 调用函数身高=1.65体重=55bmi值=计算BMI(身高,体重)print(f"你的BMI指数是:{bmi值:.2f}")4. 输出结果(return)
return语句用于从函数中返回值,结束函数的执行。
生活例子:
- 计算面积后返回面积值
- 计算BMI后返回BMI值
- 判断是否为质数后返回布尔值
代码示例:
# 带返回值的函数def判断质数(数字):"""判断一个数是否是质数"""if数字<=1:returnFalseforiinrange(2,int(数字**0.5)+1):if数字%i==0:returnFalsereturnTrue# 调用函数数字=17结果=判断质数(数字)if结果:print(f"{数字}是质数")else:print(f"{数字}不是质数")5. 默认参数值
默认参数值允许我们在函数调用时不提供某些参数,使用预定义的默认值。
生活例子:
- 计算折扣时,默认折扣率为0.9
- 打印问候语时,默认称呼为"先生"
- 计算面积时,默认宽为1
代码示例:
# 带默认参数的函数def计算折扣价(原价,折扣率=0.9):"""计算折扣后的价格"""折扣价=原价*折扣率return折扣价# 调用函数(使用默认折扣率)价格1=计算折扣价(100)print("使用默认折扣率:",价格1)# 调用函数(指定折扣率)价格2=计算折扣价(100,0.8)print("使用指定折扣率:",价格2)6. 多个输入项
函数可以接受多个参数,参数之间用逗号分隔。
生活例子:
- 计算长方形面积需要长和宽
- 计算三角形面积需要底和高
- 计算加权平均分需要多个分数和对应的权重
代码示例:
# 多个参数的函数def计算三角形面积(底,高):"""计算三角形的面积"""面积=底*高/2return面积def计算加权平均分(语文,数学,英语,语文权重=0.3,数学权重=0.4,英语权重=0.3):"""计算加权平均分"""平均分=语文*语文权重+数学*数学权重+英语*英语权重return平均分# 调用函数面积=计算三角形面积(10,5)print("三角形的面积是:",面积)平均分=计算加权平均分(85,92,88)print("加权平均分是:",平均分)7. 功能调用功能
函数可以调用其他函数,这样可以将复杂的任务分解为更小的子任务。
生活例子:
- 计算BMI指数时调用计算体重的函数
- 计算总价格时调用计算折扣价的函数
- 生成报告时调用多个数据处理函数
代码示例:
# 函数调用函数def计算面积(长,宽):"""计算长方形的面积"""return长*宽def计算体积(长,宽,高):"""计算长方体的体积"""底面积=计算面积(长,宽)体积=底面积*高return体积# 调用函数体积=计算体积(5,3,2)print("长方体的体积是:",体积)8. 内置功能
Python提供了许多内置函数,这些函数可以直接使用,不需要定义。
常用内置函数:
print():打印输出input():获取用户输入len():获取长度range():生成数字序列sum():计算和max():获取最大值min():获取最小值abs():获取绝对值round():四舍五入type():获取类型str():转换为字符串int():转换为整数float():转换为浮点数
代码示例:
# 使用内置函数# print():打印输出print("Hello, Python!")# input():获取用户输入姓名=input("请输入你的姓名:")print("你好,"+姓名+"!")# len():获取长度字符串="Python"print("字符串长度:",len(字符串))# sum():计算和数字列表=[1,2,3,4,5]print("列表和:",sum(数字列表))# max():获取最大值print("最大值:",max(数字列表))# min():获取最小值print("最小值:",min(数字列表))# abs():获取绝对值print("绝对值:",abs(-10))# round():四舍五入print("四舍五入:",round(3.14159,2))# type():获取类型print("类型:",type(数字列表))# str():转换为字符串数字=123print("数字转字符串:",str(数字))# int():转换为整数字符串数字="123"print("字符串转整数:",int(字符串数字))# float():转换为浮点数print("整数转浮点数:",float(数字))动手实践
基础练习(必做)
- 制作数学工具箱:编写一个程序,包含多个数学相关的函数
# 数学工具箱def求和(*数字们):"""计算多个数字的和"""returnsum(数字们)def求平均(数字列表):"""计算列表中数字的平均值"""ifnot数字列表:return0returnsum(数字列表)/len(数字列表)def求最大(数字列表):"""找出列表中的最大值"""ifnot数字列表:returnNonereturnmax(数字列表)def求最小(数字列表):"""找出列表中的最小值"""ifnot数字列表:returnNonereturnmin(数字列表)# 测试函数成绩列表=[85,92,78,88,95]print("成绩列表:",成绩列表)print("总分:",求和(*成绩列表))print("平均分:",求平均(成绩列表))print("最高分:",求最大(成绩列表))print("最低分:",求最小(成绩列表)) - 制作字符串工具箱:编写一个程序,包含多个字符串处理函数
# 字符串工具箱def统计字数(文本):"""统计文本的字数"""returnlen(文本)def反转文字(文本):"""将文字反转"""return文本[::-1]def替换文字(文本,旧内容,新内容):"""替换文本中的内容"""return文本.replace(旧内容,新内容)def转换大写(文本):"""将文本转换为大写"""return文本.upper()def转换小写(文本):"""将文本转换为小写"""return文本.lower()# 测试函数文本="Hello, Python!"print("原文本:",文本)print("字数:",统计字数(文本))print("反转:",反转文字(文本))print("替换:",替换文字(文本,"Python","World"))print("大写:",转换大写(文本))print("小写:",转换小写(文本))
进阶练习(选做)
- 制作单位转换器:编写一个程序,包含长度、重量、温度等单位转换函数
# 单位转换器def厘米转英寸(厘米):"""将厘米转换为英寸"""return厘米/2.54def公斤转磅(公斤):"""将公斤转换为磅"""return公斤*2.20462def摄氏度转华氏度(摄氏度):"""将摄氏度转换为华氏度"""return摄氏度*9/5+32def华氏度转摄氏度(华氏度):"""将华氏度转换为摄氏度"""return(华氏度-32)*5/9# 测试函数print("100厘米 =",厘米转英寸(100),"英寸")print("50公斤 =",公斤转磅(50),"磅")print("25摄氏度 =",摄氏度转华氏度(25),"华氏度")print("77华氏度 =",华氏度转摄氏度(77),"摄氏度") - 制作计算器:编写一个程序,包含加、减、乘、除等运算函数
# 计算器def加法(a,b):"""加法运算"""returna+bdef减法(a,b):"""减法运算"""returna-bdef乘法(a,b):"""乘法运算"""returna*bdef除法(a,b):"""除法运算"""ifb==0:return"除数不能为零"returna/b# 测试函数print("10 + 5 =",加法(10,5))print("10 - 5 =",减法(10,5))print("10 * 5 =",乘法(10,5))print("10 / 5 =",除法(10,5))print("10 / 0 =",除法(10,0))
挑战练习(拓展)
- 制作高级数学工具箱:编写一个程序,包含更复杂的数学函数
# 高级数学工具箱importmathdef计算圆面积(半径):"""计算圆的面积"""returnmath.pi*半径**2def计算圆周长(半径):"""计算圆的周长"""return2*math.pi*半径def计算阶乘(n):"""计算阶乘"""ifn<0:return"阶乘不能为负数"returnmath.factorial(n)def计算平方根(x):"""计算平方根"""ifx<0:return"平方根不能为负数"returnmath.sqrt(x)# 测试函数print("半径为5的圆面积:",计算圆面积(5))print("半径为5的圆周长:",计算圆周长(5))print("5的阶乘:",计算阶乘(5))print("16的平方根:",计算平方根(16))
知识总结
核心概念回顾
- 函数:完成特定任务的代码块
- 参数:函数接收的输入值
- 返回值:函数返回的结果
- 默认参数:函数参数的默认值
- 函数调用:执行函数的过程
- 内置函数:Python提供的预定义函数
关键代码速查
| 功能 | 代码 | 说明 |
|---|---|---|
| 定义函数 | def 函数名(参数): 代码块 return 返回值 | 定义一个函数 |
| 调用函数 | 函数名(参数) | 执行函数并获取返回值 |
| 默认参数 | def 函数名(参数=默认值): | 为参数设置默认值 |
| 多个参数 | def 函数名(参数1, 参数2, ...): | 定义接受多个参数的函数 |
| 函数调用函数 | def 函数1(): 函数2() | 在一个函数中调用另一个函数 |
| 内置函数 | print(),input(),len() | Python提供的预定义函数 |
常见错误提醒
- 缩进错误:函数体的缩进不正确
- 参数错误:调用函数时参数数量或类型不匹配
- 返回值错误:函数没有返回预期的值
- 命名错误:函数名或变量名拼写错误
- 作用域错误:在函数外部访问函数内部的变量
课后作业
巩固练习题
- 编写一个函数,判断一个年份是否是闰年
- 编写一个函数,计算两个数的最大公约数
创意编程题
- 编写一个函数,生成指定长度的随机密码
- 编写一个函数,将阿拉伯数字转换为中文数字
下篇预习提示
在下一篇中,我们将学习面向对象编程,了解如何使用类和对象来组织代码。请思考:
- 生活中有哪些可以被抽象为类的事物?
- 如何使用类来模拟现实世界的对象?
学习交流
如果你在学习过程中遇到任何问题,欢迎联系我:
- ** 视频号,“时空系”
- 邮箱:wbtm2718@qq.com
- 其他提示:
- 本人正在开发纯中文编程语言和编译器,有兴趣的可以交流
- 本人正在写一本基于中国母语思维习惯的数学教材,可以让你一年内学完从初中到研究生的数学,而且可以让你快速掌握人工智能的关键数学知识,有兴趣的可以交流
祝你学习愉快!