Python程序设计案例教程第4章 函数(1)教学课件.pptx

上传人:春哥&#****71; 文档编号:87410812 上传时间:2023-04-16 格式:PPTX 页数:64 大小:23.84MB
返回 下载 相关 举报
Python程序设计案例教程第4章 函数(1)教学课件.pptx_第1页
第1页 / 共64页
Python程序设计案例教程第4章 函数(1)教学课件.pptx_第2页
第2页 / 共64页
点击查看更多>>
资源描述

《Python程序设计案例教程第4章 函数(1)教学课件.pptx》由会员分享,可在线阅读,更多相关《Python程序设计案例教程第4章 函数(1)教学课件.pptx(64页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、Python程序设计案例教程第4章 函数(1)主 讲 人:X X X01自 定 义 函 数函数定义函数定义在Python中使用def关键字定义函数,其基本语法如下:def函数名(参数列表):函数体return语句其中:(1)def:定义函数必须使用的关键字,标志着定义函数的开始。(2)函数名:用户自己为函数取的名字,是函数的唯一标志,其命名规则与变量命名规则相同。函数定义函数定义(3)圆括号:“()”必须要有,表示这是一个函数,括号里面是函数的参数,即便函数没有参数,这个括号也不能省略。(4)参数列表:这里的参数称为形式参数,简称“形参”。参数个数可以是零个、一个或者多个,多个参数之间用逗号隔

2、开。若参数个数为零,则称该函数为无参函数,反之为有参函数。(5)冒号:是定义函数的必须格式,标记函数体的开始。(6)函数体:是该函数的核心,即每次调用函数要执行的代码,由一行或多行Python语句构成,它们要保持缩进。(7)return语句:标志着函数的结束,该语句可以有零个、一个或多个,将其后的值返回至函数调用的地方。【例【例4.14.1】定定义义一个比一个比较较两个数大小的函数。两个数大小的函数。代代码实现码实现:defmy_max(a,b):t=aifba:t=breturnt【例【例4.24.2】定定义义一个求一个求绝对值绝对值的函数。的函数。代代码实现码实现:defmy_absolu

3、te(x):ifx=0:print(x)else:print(-x)巩固提高巩固提高1定定义义一个比一个比较较三个数大小的函数。三个数大小的函数。2分分别别定定义义函数,函数,计计算算圆圆的面的面积积和周和周长长。02函数调用调用函数的方式比较简单,其语法如下:函数名(参数列表)此时的参数称为实际参数,简称“实参”,实参的值将被传递给函数的形参。实参的值可以是常量、变量、表达式、函数等。程序执行时,函数调用的流程简要叙述如下。(1)主程序在函数调用处暂停执行。(2)将实参传递给形参。(3)进入被调函数,执行函数体里面的语句,直至遇到return语句返回;若无return语句则执行到最后一句后返

4、回到函数调用处。(4)接着执行函数调用后面的语句,直至主程序结束则停止。【例4.3】从键盘输入两个数,调用例4.1中的my_max()函数比较两数的大小,最后输出两者间的较大值。代码实现:defmy_max(a,b):t=aifba:t=breturntx=int(input(x=)y=int(input(y=)max=my_max(x,y)print(两者中较大的是:,max)输入:45。程序执行流程如图4-1所示。【例4.4】调用例4.2中的my_absolute()函数返回-10.0的绝对值。代码实现:defmy_absolute(x):ifx=0:print(x)else:print(

5、-x)my_absolute(-10.0)print(-程序结束-)程序执行流程如图4-2所示。知识点提示:(1)形参和实参区分:形参一般在函数定义的时候出现,实参一般在函数调用的时候出现。(2)自定函数在使用之前,一定确保该函数已经被定义过,否则解释器会报错而无法运行。巩固提高4.1.2巩固提高答案1从键盘输入三角形三条边,利用海伦公式求该三角形的面积。2输入整数n,自定义函数,实现求和:1+(1+2)+(1+2+3)+(1+2+3+n)。03参数传递1 1位置参数位置参数传递传递当函数调用时,默认按照参数位置的顺序进行传递,即将第1个实参数据传递给第1个形参,第2个实参传递给第2个形参,以

6、此类推,完成全部参数的传递。【例4.5】假设自定义一个函数is_triangle(),实现判定一个三角形是否为直角三角形,该函数的定义如下:defis_triangle(a,b,c):ifa*a+b*b=c*cora*a+c*c=b*borb*b+c*c=a*a:print(该三角形是直角三角形)else:print(该三角形不是直角三角形)由以上函数定义可以看出,is_triangle()函数有3个形参,即函数需要接受3个值(表示三角形的三条边长),那么在调用is_triangle()函数时,需要传入3个参数,代码如下:is_triangle(1,2,3)参数传递过程如图4-3所示。默认值参

7、数就是在函数定义时为一些形参预先设定一个默认值,在调用带有默认值参数的函数时,可以不用为设置了默认值的形参进行传值,此时函数将会直接使用函数定义时设置的默认值。在编程中经常会遇到事先知道函数会被多次调用,且调用时某些形参的值不会发生变化,此时为了编程简便,编程者习惯将这些值不发生变化的参数设置成具有默认值的参数。带有默认值参数的函数定义语法如下:def函数名(,形参名=默认值):函数体【例4.6】设定一个函数show_date(),多次调用该函数显示2020年3月的日期。该函数定义如下:defshow_date(day,month=3,year=2020):print(year+.+month

8、+.+day)foriinrange(32):i=str(i)show_date(i)当函数中形参的数目过多时,编程者很难记住每个参数的位置,这时可以使用关键字方式传递参数。关键字参数传递主要指调用函数时的参数传递方式,与函数定义无关。通过关键字参数传递可以按参数名字传递值,它允许实参顺序与形参顺序不一致,且不会影响参数值的传递结果,避免编程者需要牢记参数位置和顺序的麻烦,使得函数的调用和参数的传递更加灵活。注意是在函数调用的地方设置关键字参数,其语法如下:函数名(形参变量名1=实参值1,形参变量名2=实参值2,)【例4.8】将例4.7中函数调用处改成关键字参数方式,代码如下:deffun(a

9、,b=1,c=2)print(a,b,c)fun(c=3,a=1,b=2)运行结果:123知识点提示:(1)在函数内部直接修改形参的值不会影响实参的值。(2)在调用函数时是否为默认值参数传递实参是可选的。(3)任何一个默认值参数右边都不能再出现没有默认值的位置参数。(4)关键字参数的设定是在函数调用处进行的。知识点提示:巩固提高:1 自 定 义 函 数,求 一 个 数 的 素 数 因 数,如 12,其 因 数 为“1,2,3,4,6,12”,其中为素数的只有“2,3”,故12的素数因数为“2,3”。2自定义两个函数分别计算:一个数的最大公约数和最小公倍数。知识点提示:任何一个函数都拥有返回值,

10、遇到return语句,将其后的值返回到函数调用处,若没有return语句,则函数体执行完毕后返回一个None。函数中return语句是可选项,可以出现在函数的任何位置,它的作用是结束当前函数,无论有多少个return语句,当执行到第一个return语句时,立刻将程序返回到函数调用的位置,继续执行主程序中剩下的语句,同时将函数中的数据返回给主程序。知识点提示:【例4.9】自定义函数is_Prime(),实现判段输出一个数是否为素数。代码实现:defis_Prime(n):foriinrange(2,n):ifn%i=0:print(该数不是素数)#循环执行过程中碰到符合条件时,输出不是素数bre

11、ak#同时立即使用break结束函数体的执行,返回到函数调用处print(该数是素数)#当循环都执行完毕了还未碰到符合条件,判断输出是素数result=is_Prime(7)#将None值返回并复制给变量resultprint(result)知识点提示:运行结果:该数是素数None以上程序定义了is_Prime()函数,实参7传递给形参n,当i=2、3、4、5、6时,if条件均不成立,故第一个print()、break永远得不到执行,此时for循环结束,顺序执行第2个print(),输出结果“该数是素数”。函数体执行过程中并未遇到return语句,故将None返回到函数调用的地方,并将None

12、复制给变量result,并最终输出到屏幕上。知识点提示:知识点提示:(1)函数可以有零个、一个或多个return语句,但无论多少个return语句,只有一个return语句起作用,即第一次遇到的return语句,系统只要一遇到return语句就立刻结束函数体语句的执行,将值返回到函数调用的地方。(2)若没有return语句,则默认返回None到函数调用的地方。知识点提示:巩固提高:1自定义函数,实现判段一个三位数是否是水仙花数。所谓的“水仙花数”是指一个三位数其各位数字的立方和等于该数本身,例如153是“水仙花数”,因为153=13+53+33。2某公司根据员工在本公司的工龄决定其可享受的年假

13、天数,如表4-1所示。知识点提示:除了前面介绍的普通函数,本节将介绍Python中3种常见的特殊函数:递归函数、匿名函数和随机函数。函数的递归调用是函数调用的一种特殊方式,即函数调用自己,自己再调用自己,自己再调用自己当某个条件得到满足时就不再调用了,然后再一层一层地返回,直到回到该函数的第一次调用,过程如图4-4所示。知识点提示:【例4.11】自定义函数fact(),实现求n!=1*2*3*4*(n-1)*n的值。代码实现:deffact(n):ifn=1:return1else:returnfact(n-1)*n#fact()函数递归调用自己result=fact(5)print(5!=,

14、result)知识点提示:fact(n)是一个递归函数,当n大于1时,fact(n)以n-1作为参数重复调用自身,直到n为1时调用结束,开始返回得出每层函数调用的结果,最后返回计算结果。本例中调用函数求5的阶乘,则递归函数的整个执行过程如图4-5所示。知识点提示:巩固提高:1一只猴子第1天摘下若干桃子,当即吃了一半,还不过瘾,又多吃了1个。第2天早上又将剩下的桃子吃掉一半,又多吃1个。以后每天早上都吃了前一天剩下的一半再多加1个。到第10天早上想再吃的时候,只剩下1个桃子了,问猴子在第1天共摘了多少个桃子?2求斐波那契数列第n项的值。斐波拉契数列又称黄金分割数列,这个数列从第3项开始,它的每一

15、项等于前两项的和。在数学上,其递推公式定义如下:F(1)=1,F(2)=1,F(n)=F(n-1)+F(n-2)(n=3)。知识点提示:匿名函数,即没有函数名字的临时使用的小函数,无须定义标识符,它与普通函数一样可以在程序的任何位置使用。编程过程中,时常会遇到临时需要一个类似于函数的功能但又不想去完成复杂函数定义的情况,这时可以使用匿名函数来代替。Python中使用lambda关键字定义匿名函数,因此又将匿名函数称为lambda表达式。在定义时被严格限定为单一表达式,不允许包含其他复杂的语句,但在表达式中可以调用其他函数,该表达式的计算结果相当于函数的返回值,其语法格式如下:lambda:知识

16、点提示:【例4.12】定义一个求3个数字之和的匿名函数,并计算输出1+2+3的和。代码实现:f=lambdax,y,z:z+y+z#定义匿名函数temp=f(1,2,3)#变量f作为匿名函数临时名称来调用函数print(“1+2+3=”,temp)运行结果:1+2+3=6匿名函数有3个参数x、y、z,此时使用变量f作为匿名函数临时名称来调用,f(1,2,3)使得3个参数得到相应的值,最终计算出结果。改为:x+y+z知识点提示:巩固提高:1定义一个匿名函数,完成计算一个数值的平方。2定义一个匿名函数,完成计算两个数值的乘积。知识点提示:巩固提高:1定义一个匿名函数,完成计算一个数值的平方。2定义

17、一个匿名函数,完成计算两个数值的乘积。知识点提示:1 1random.random()random.random()random()函数作用:返回0与1之间的随机浮点数N,范围为0=N1.0。【例4.13】产生两个01之间的随机浮点数,并打印输出。代码实现:importrandom#引入random模块print(random():,random.random()#生成第一个01的随机数print(random():,random.random()#生成第二个01的随机数运行结果:random():0.08735808570425463random():0.7156648848525313知识

18、点提示:2 2random.uniform(a,b)random.uniform(a,b)uniform(a,b)函数作用:返回a与b之间的随机浮点数N,范围为a,b。若ab,则生成的随机浮点数N的取值范围为a=Nb,则生成的随机浮点数N的取值范围为b=N=a。【例4.14】使用uniform()函数随机产生两个10100之间的浮点数,并打印输出。代码实现:importrandom#引入random模块print(random:,random.uniform(10,100)#生成一个10100的随机数print(random:,random.uniform(100,10)#第一个参数小于第二个

19、参数的情况运行结果:random:26.327833627251515random:24.50452904693097知识点提示:3 3random.randint(a,b)random.randint(a,b)randint(a,b)函数作用:返回一个随机的整数N,N的取值范围为a=N=b。需要注意的是,a和b的取值必须为整数,并且a的值一定要小于b的值。【例4.15】使用randint()函数随机产生两个1020之间的整数,并打印输出。代码实现:importrandom#引入random模块print(random.randint(10,20)#生成一个随机数N,N的取值范围为12=Ny:

20、t=xelse:t=yreturntdefmyMin(x,y):ifxy:t=xelse:t=yreturnt将这个程序保存到D:test1目录下。知识点提示:第二步:设计另外一个程序test1.py,将其保存到相同的目录D:test1下,在test1.py中引用myModule1.py,代码实现如下:importmyModule1#引入自定义的模块min=myModule1.myMin(10,20)max=myModule1.myMax(10,20)print(min,max)或者:frommyModule1importmyMin,myMax#引入自定义的模块min=myMin(10,20)

21、max=myMax(10,20)print(min,max)执行结果:1020知识点提示:使用模块的过程中应注意如下几点。(1)被引用的模块要放在与引用程序相同的目录下,或放在Python能找到的目录下。(2)在引用自定义模块时不要加“.py”,即不能写成importmyModule1.py。(3)引用模块的函数时要写模块名称与函数名称,之间用“.”连接,例如myModule1.myMin(10,20)。总之,通过模块可以把已经编写好的程序组织在一个个模块中,下次直接引用模块即可,而不用再重复、多次地编写函数。Python系统已经编写了很多模块,如数学模块math,引入math模块就可以使用现

22、成的数学函数。知识点提示:知识点提示:4.3.2Python4.3.2Python模模块块的位置的位置Python模块是设计完成的Python程序,Python中的模块一般放在安装目录的lib文件夹中。【例4.21】设计一个求圆面积的模块,将其放在lib目录中并引用它。第一步:设计一个程序myMoudule2.py,它包含myCir_area函数,代码如下:defmyCir_area(r):return3.14*r*r把这个程序保存到Python安装目录的lib文件夹中。第二步:设计另外一个程序test2.py,保存到D:test目录下,在test2.py中引用myMoudule2.py,知识

23、点提示:代码实现如下:frommyModule2importmyCir_areacir1=myCir_area(5)cir2=myCir_area(10)print(圆1的面积=,cir1)print(圆2的面积=,cir1)执行结果:圆1的面积=78.5圆2的面积=314.0注意,只要将自己定义的模块存放到了安装目录的lib文件夹中,另一程序无论放在哪个位置,均可以使用该模块完成相应的功能。知识点提示:巩固提高1设计一个myMoudule.py模块,里面包含求两个数较大值、求两个数较小值、求一个数的绝对值、求圆面积、求三角形面积的功能函数,将其放入Python安装目录的lib文件夹中,以方便

24、使用。知识点提示:常用数学函数常用数学函数(1)max()函数:返回给定参数的最大值,参数可以为序列。例如:print(max(10,20,30):,max(10,20,30)#使用内置max()函数求最大值print(max(10,-2,3.4):,max(10,-2,3.4)输出结果:max(10,20,30):30max(10,-2,3.4):10(2)min()函数:返回给定参数的最小值,参数可以为序列。例如:print(min(10,20,30):,min(10,20,30)#使用内置min()函数求最大值print(min(10,-2,3.4):,min(10,-2,3.4)输出结

25、果:min(10,20,30):10min(10,-2,3.4):-2知识点提示:(3)abs()函数:返回数字的绝对值。例如:print(abs(-45)#使用内置abs()函数返回该数的绝对值print(abs(0.2):,abs(0.2)输出结果:45abs(0.2):0.2(4)pow()函数:返回x的y次幂的值。注意:pow()通过内置的函数直接调用,内置函数会把参数作为整数类型,而math模块中的pow()则会把参数转换为浮点数类型。例如:print(pow(2,2)#通过内置的pow()函数实现xyprint(pow(2,-2)输出结果:40.25知识点提示:(5)sorted(

26、)函数:对所有可迭代的对象进行排序(默认升序)操作。例如:print(sorted(1,2,5,30,4,22)#对列表进行排序输出结果:1,2,4,5,22,30(6)divmod()函数:把除数和余数运算结果结合起来,返回一个包含商和余数的元组(商x,余数y)。例如:print(divmod(5,2)print(divmod(5,1)print(divmod(5,3)输出结果:(2,1)(5,0)(1,2)知识点提示:(7)len()函数:返回对象(字符、列表、元组等)的长度或元素个数。例如:print(len(1234)#字符串,返回字符长度print(len(1234,asd,1)#列

27、表,返回元素个数print(len(1,2,3,4,50)#元组,返回元素个数输出结果:435若输入如下代码:print(len(12)输出结果:TypeError:objectoftypeinthasnolen()知识点提示:(1)input()函数:用于接受一个标准输入数据,返回值为string类型。这个函数是最常用的了,在Python3.x中将raw_input()和input()进行了整合,仅保留了input()函数。例如:a=123456b=input(username:)ifb=a:#如果b的输入数据等于a存储的数据,则打印“right”print(right)else:#否则打印

28、“wrong”print(wrong)输入:123456。输出结果:username:123456right知识点提示:(2)print()函数:用于打印输出,也是最为常见的一个函数。print()在Python3.x是一个函数,但在Python2.x版本只是一个关键字。例如:print(abs(-45)print(HelloWorld!)输出结果:45HelloWorld!知识点提示:(3)eval()函数:用于执行一个字符串表达式,并返回表达式的值,在有些场合用于实现类型转换的功能。功能一:执行一个字符串表达式,并返回表达式的值。例如:print(eval(3*2)#实现计算字符串里面的表达的值,即3*2=6输出结果:6功能二:实现类型转换的功能,也称为评估函数,根据数据本身的样式来判断其数据类型。例如:t=input(t=)print(type(t)t1=eval(t)print(type(t1)输入:t=6。输出结果:知识点提示:(4)id()函数:用于获取对象的内存地址。例如:a=123print(id(a)输出结果:3181683178160知识点提示:在计算机二级Python语言程序考试中,程序控制结构部分明确指出要求掌握如下内容:函数的定义和使用。函数的参数传递:可选参数传递、参数名称传递、函数的返回值。常见内置函数的使用。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com