内容正文:
2.4 可以复用的代码
——自定义函数
板书:课堂标题
一、函数
# 计算三个圆的面积
r1 = 2
s1 = 3.14 * r1 * r1
print(“半径为2的圆面积:”, s1)
r2 = 5
s2 = 3.14 * r2 * r2
print(“半径为5的圆面积:”, s2)
r3 = 10
s3 = 3.14 * r3 * r3
print(“半径为10的圆面积:”, s3)
这段代码有什么问题?
太啰嗦,需要重复写 三次3.14 * r * r
如果要改圆周率(比如改成3.14159),要修改三处
能不能像用计算器一样,输入半径,直接显示面积?
利用函数——把“计算面积”这个操作打包成一个工具。
一、函数
函数:将一组语句用一个名字封装起来,类似于写好模板,可以直接拿来使用。
#自定义函数的基本格式
def 函数名(参数) :
语句或语句组 # 函数体
return 返回值
#mianji(r)代表一段计算半径为r的圆的面积的函数代码
# 自定义一个求圆的面积的函数
def mianji(r) : # mianji是函数名,r是参数
s = 3.14 * r * r # 函数体
return s # 返回计算后面积s的值
二、函数的分类
1.系统函数
函数库中的标准函数,是程序设计语言或操作系统提供给用户的一系列已经编好的程序。
print( ) input( )
max( ) min( )
int( ) float( )
2.用户自定义函数
用户自己编写的一段程序。
mianji(r)
zhouchang(r)
f(n)
三、函数的定义与使用
函 数 名
参 数
返 回 值
函 数 体
同变量命名规则
向函数传递值,多个参数需用逗号隔开
将表达式的值返回给调用者
重复使用的代码
2.后使用:
函数名(参数)
注意:函数名和函数体不可省略,参数和返回值可根据需要进行定义。
1.先定义:
def 函数名(参数) :
语句或语句组(函数体)
return 返回值
缩进
缩进
P47
三、函数的定义与使用
def 函数名(参数):
函数体
return 返回值
#函数的定义
def mianji(r):
s=3.14*r*r
return s
#函数的调用
s1=mianji(2)
s2=mianji(5)
s3=mianji(10)
print(s1,s2,s3)
# 计算三个圆的面积,如何通过函数来实现?
r1 = 2
s1 = 3.14 * r1 * r1
print(“半径为2的圆面积:”, s1)
r2 = 5
s2 = 3.14 * r2 * r2
print(“半径为5的圆面积:”, s2)
r3 = 10
s3 = 3.14 * r3 * r3
print(“半径为10的圆面积:”, s3)
把求圆的面积的函数写好了之后,那么无论半径r为多少都可以直接通过调用该函数来求面积了,这样就不需要去重复书写或者修改我们的代码
#函数的调用
函数名(参数)
四、函数调用
def mianji(r):
s=3.14*r*r
return s
运行步骤:
1.主程序的第一行s1=mianji(2)
2.调用函数mianji(r),转到函数的第一行
3.参数r被赋值为2,即r=2
4.函数执行s=3.14*r*r=3.14*2*2,完成返回s=12.56,
5.s1=mianji(2)=12.56
6.print(s1) 输出s1的结果为:12.56
程序执行时def块中的代码不是主程序的一部分!
①因为出现def,所以跳过
②因此,这一行才是主程序的第一行,从这里开始执行
程序自上而下逐行执行
③s1=mianji(2),调用了mianji(r)函数,程序才执行mianji(r)函数,参数r变成2
#调用mianji(r)函数
s1=mianji(2)
print(s1)
思考以下问题:
函数名:
参数:
函数体:
返回值:
主程序从哪里开始:
课堂练习
题目: 定义一个函数,计算长方体体积。
公式: 体积 = 长 * 宽 * 高
横线处请补全填空:
def tiji(a,b,c):
v = ___________
return _______
# 调用
v = tiji(3,4,5)
print(“体积为:”, v)
tiji
a,b,c
v=a*b*c
v = tiji(3,4,5)
v
a*b*c
v
①因为出现def,所以跳过
(程序执行时def块中的代码不是主程序的一部分!)
②因此,这一行才是主程序的第一行,从这里开始执行
③v=tiji(3,4,5),调用了tiji(a,b,c),程序才执行mianji(r)函数,参数a,b,c变成3,4,5
活动一 :计算 1+2+3+...+x-1+x
用range()函数计算1+2+3+...+10
1.分析问题:需要两个变量:
①s:记录目前的累加和,求和初始值为0;
②循环变量i:1,2,3,...10,10个元素,所以借助range()函数快捷生成,通过i依次取值。
2.编写代码:
将求和的的结果存放到变量s中
一开始,还没加,所以s=0
第1次:s=s+1
第2次:s=s+2
第3次:s=s+3
...
第10次:s=s+10
最终即:s=1+2+3+...+10
用range()生成1至10
循环体写成:s=s+i
s=0
for i in range(1,11,1):
s=s+i
print(s)
活动一 :计算 1+2+3+...+x-1+x
def f(x):
s=0
for i in range(__,____,___):
s=_____
return s
将累加的结果存放到变量s中
一开始,还没加,s=0
第一次:s=s+1
第二次:s=s+2
第三次:s=s+3
第四次:s=s+4
......
第x次:s=s+x
最终即s=1+2+3+...+x
i从1到x进行变化——可以使用range()函数来实现
不断重复的操作:s=s+i——作为循环体
f(x):这个函数就是计算从1依次加到x的累加和。 (x是参数,f是函数名)
1
x+1
s+i
1
活动一 :1+2+3+...+x-1+x
#定义函数
def f(x):
s=0
for i in range(1,x+1,1):
s=s+i
return s
#调用函数
s1=f(10)
print(s1)
s1=f(10) ,x=10,range(1,11,1)得到1,2,3,...,10
i=1,s=s+i=0+1=1
i=2,s=s+i=1+2
i=3,s=s+i=1+2+3
...
s=1+2+3+...+10
运行结果为:55
如果要计算1+2+3+...+100
只需修改哪一行代码即可实现?
s2=f(100)
课堂练习
1.下列代码的输出结果是( )
def sum (a,b):
c=a*2+b
return c
total=sum(4,5)
print(total)
A.4 B.5 C.9 D.13
D
2.下列代码的输出结果是( )
def f(x):
s=0
for i in range(1,x+1,1):
s=s+i
return s
total=f(5)
print(total)
A.5 B.10 C.15 D.24
c
total=sum(4,5),调用sum(a,b)函数,a=4,b=5
c=a*2+b=4*2+5=13
total=f(5),调用f(x)函数,x的值为5
range(1,6,1)得到1,2,3,4,5
s=1+2+3+4+5=15
课堂作业
练习1——温度转换器
题目: 定义函数 wendu(b),将摄氏度转换为华氏度。
公式: 华氏度a= 摄氏度b * 1.8 + 32
要求: 输入0°C, 0输出结果。
练习2:计算1+3+5+...+x
题目: 定义函数f(x),计算所有奇数和的结果。
要求:分别输出从1加到11,从1加到99的结果
参考答案:
$