资源简介 (共18张PPT)4.1.4python的函数-自定义函数if sum1>sum2:print("小智的总分最高")else:print("小慧的总分最高")0.情境导入【案例一】下列是小智和小慧语文、数学、英语和物理的期末成绩,请编写程序,找出哪位同学的总分最高?lst1=[91,95,90,88]sum1=0for i in lst1[0:]:sum1=sum1+i91,95,90,88小智92,91,93,90小慧364366小慧的总分最高【解题思路】lst2=[92,91,93,90]sum2=0for i in lst2[0:]:sum2=sum2+i小智的总分小慧的总分比较两人的总分0.情境导入lst1=[91,95,90,88]sum1=0for i in lst1[0:]:sum1=sum1+ilst2=[92,91,93,90]sum2=0for i in lst2[0:]:sum2=sum2+iif sum1>sum2:print("小智的总分最高")else:print("小慧的总分最高")求和函数sum( )lst1=[91,95,90,88]lst2=[92,91,93,90]if sum(lst1)>sum(lst2):print("小智的总分最高")else:print("小慧的总分最高")一、函数1.概念:是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。2.优点:提高应用的模块性,代码的重复利用率。3.类型:(1)内建函数:Python提供的函数,比如print()、input()、max()…(2)自定义函数:用户自己创建函数函数 描述print( ) 输出函数input(x) 显示出信息x,并要求输入函数int(x) 将变量x转换成整型float(x) 将变量x转换成实型sum(x) 计算变量x中元素的总和len(x) 计算变量x的长度,但x必须是可以计算长度的类型max(x) 返回变量x的最大值min(x) 返回变量x的最小值关键字def:定义、说明函数名:命名要求与变量的标识符命名要求一样参数:可有可无语句块:必须缩进不能在函数体里调用函数本身,否则会陷入循环调用应用特点:先定义函数,再调用函数,最后执行函数调用函数:无参数时,函数名()有参数时,函数名(参数1,参数2...)一、函数def 函数名(参数1,参数2…):<函数体>[return 函数值]自定义函数def add( ): #定义函数sum = 1 + 2return sumsum1=add() #调用函数print(sum1)例如函数名(参数1,参数2…)调用函数注意事项一、函数def hello():print("hello world")【思考】观察分析下列两段代码,是否定义了函数?并总结归纳参数、函数体、返回值之间的关系。def sum(a,b):print(a+b)参数:可有可无def hello(x):print("hello world"*x)def sum(a,b):return a+bdef sum(a,b):c=a+breturn c函数体:可有可无返回值:可有可无函数体和返回值,两者必有其一一、函数lst1=[91,95,90,88]sum1=0for i in lst1[0:]:sum1=sum1+ilst2=[92,91,93,90]sum2=0for i in lst2[0:]:sum2=sum2+iif sum1>sum2:print("小智的总分最高")else:print("小慧的总分最高")【案例二】请分析计算小智和小慧成绩总分的代码,尝试自定义mySum( )函数,返回成绩列表的总和,并调用mySum( )函数,比较输出谁的总分最高。#自定义函数mySum ( )#函数名,参数sum1=0for i in lst1[0:]:sum1=sum1+i#返回成绩列表的总和lst1=[91,95,90,88]lst2=[92,91,93,90]#调用mySum( )函数if :print("小智的总分最高")else:print("小慧的总分最高")mySum(lst1)>mySum(lst2)def mySum (lst):return sum1为什么定义函数时参数是lst,调用函数时,参数是lst1,lst2?一、函数#自定义函数mySum ( )def mySum(lst):sum1=0for i in lst1[0:]:sum1=sum1+ireturn sum1lst1=[91,95,90,88]lst2=[92,91,93,90]#调用mySum( )函数if mySum(lst1)>mySum(lst2):print("小智的总分最高")else:print("小慧的总分最高")形式参数实际参数1.形式参数定义函数时的参数,是形式上的参数可以理解为数学的X,没有实际的值,通过赋值后才有意义。这里的lst是形参,用来描述函数执行的步骤。2.实际参数:调用函数时的参数,是真实的数据信息。调用函数时,Lst1,Lst2这些实参的数据传递给lst,从而执行对应的函数体操作。【练习1】1个篮球场的长为28m,宽为15m,请自定义函数,计算并输出篮球场的面积。二、巩固练习def sq( ):sq = 28 * 15return sqlqc_sq=sq()print(lqc_sq)【练习2】1个篮球场的长为28m,宽为15m;1个双人羽毛球场的长为13.4m,宽为6.1m;1个足球场的长为105m,宽为70m,请自定义函数,计算并输出篮球场、羽毛球场、足球场的面积。二、巩固练习def sq(a,b):sq = a*breturn sqlqc_sq=sq(28,15)ymqc_sq=sq(13.4,6.1)zqc_sq=sq(105,70)print('1个篮球场的面积是',lqc_sq)print('1个羽毛球场的面积是',ymqc_sq)print('1个足球场的面积是',zqc_sq)【练习3】学校有8个羽毛球场,8个篮球场,一个足球场,请修改程序,计算并输出学校运动区域的总面积。二、巩固练习def sq(a,b):sq = a*breturn sqlqc_sq=sq(28,15)ymqc_sq=sq(13.4,6.1)zqc_sq=sq(105,70)s_sq= lqc_sq*8+ ymqc_sq*8+ zqc_sqprint('学校运动场的总面积是', s_sq)三、实践操作x=int(input())y=int(input())z=int(input())xg=a%10xs=a//10%10xb=a//100xb=str(xg)+str(xs)+str(xb)yg=b%10ys=b//10%10yy=b//100yy=str(yg)+str(ys)+str(yb)zg=c%10zs=c//10%10zb=c//100zz=str(zg)+str(zs)+str(zb)sum=int(xx)+int(yy)+int(zz)print(xx)print(yy)print(zz)print(sum)【练习4】左侧的代码是从键盘输入3个三位正整数,将其逆序输出并相加。请分析左侧代码,尝试自定义函数,并调用自定义函数,完成左侧代码的功能。x=int(input())y=int(input())z=int(input())#自定义将数字逆序显示的函数def nixu(x):g=x%10s=x//10%10b=x//100xx=str(g)+str(s)+str(b)return int(xx)#调用函数,输出逆序数字sum=nixu(x)+nixu(y)+nixu(z)print(nixu(x))print(nixu(y))print(nixu(z))print(sum)观察左侧代码,哪些代码段可以设置为自定义函数?三、实践操作【练习5】左侧的代码是能从键盘输出整数n,计算并输出1!+2!+…+n!的结果。请分析左侧代码,尝试自定义函数,并调用自定义函数,完成左侧代码的功能。n=int(input('请输入整数n='))s=0for i in range(1,n+1,1):sj=1for j in range(1,i+1,1):sj=sj*js=s+sjprint(s)def sj(i): #定义求阶乘的函数sj=1for j in range(1,i+1,1):sj=sj*jreturn sjn=int(input('请输入整数n='))s=0for i in range(1,n+1,1):s=s+sj(i)print(s)课堂小结def 函数名(参数1,参数2…):<函数体>[return 函数值]自定义函数函数名(参数1,参数2…)调用函数四、课堂小结Python常见内建函数的使用内建函数五、课后思考【练习6】下列是小智和小慧开学前4周的语文成绩,请编写程序,找出哪位同学的平均分最高?lst1=[91,95,90,88]sum1=0for i in lst1[0:]:sum1=sum1+inum1=len(lst1)avg1=sum1/num191,95,90,88小智92,91,93,90小慧364366小慧的平均分最高【解题思路】lst2=[92,91,93,90]sum2=0for i in lst2[0:]:sum2=sum2+inum2=len(lst2)avg2=sum2/num2if avg1>avg2:print("小智的平均分最高")else:print("小慧的平均分最高")小智的平均分小慧的平均分比较两个小组的最高分9191.5五、课后思考lst1=[91,95,90,88]sum1=0for i in lst1[0:]:sum1=sum1+inum1=len(lst1)mean1=sum1/num1lst2=[92,91,93,90]sum2=0for i in lst2[0:]:sum2=sum2+inum2=len(lst2)mean2=sum2/num2if mean1>mean2:print("小智的平均分最高")else:print("小慧的平均分最高")求和函数sum( )长度函数len( )mean1=sum(lst1)/len(lst1)mean2=sum(lst2)/len(lst2)if mean1>mean2:print("小智的平均分最高")else:print("小慧的平均分最高")五、课后思考lst1=[91,95,90,88]sum1=0for i in lst1[0:]:sum1=sum1+inum1=len(lst1)mean1=sum1/num1lst2=[92,91,93,90]sum2=0for i in lst2[0:]:sum2=sum2+inum2=len(lst2)mean2=sum2/num2if mean1>mean2:print("小智的平均分最高")else:print("小慧的平均分最高")求平均函数mean( )import numpy as np #导入numpy模块lst1=[91,93,88,89]lst2=[92,91,93,90]if np.mean(lst1)>np.mean(lst2):print("小智的平均分最高")else:print("小慧的平均分最高")thanks 展开更多...... 收起↑ 资源预览