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