《信息技术基础》课件 《模块六:程序设计基础》任务4_第1页
《信息技术基础》课件 《模块六:程序设计基础》任务4_第2页
《信息技术基础》课件 《模块六:程序设计基础》任务4_第3页
《信息技术基础》课件 《模块六:程序设计基础》任务4_第4页
《信息技术基础》课件 《模块六:程序设计基础》任务4_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

模块六:程序设计基础《Python》《信息技术基础》PWSO04函数调用知识目标1.能了解函数的概念和定义;2.能掌握变量的作用域;3.能够了解递归函数和匿名单数。学习目标1.能够掌握函数的传递方法;2.采用递归的方式解决问题。能力目标1.具有团队协作精神和创新意识;2.具备自主学习能力、分析和解决问题的能力。素质目标1任务描述2任务解析3知识链接4任务实施任务4:函数调用5能力拓展斐波那契数列(Fibonaccisequence)因是数学家莱昂纳多·斐波那契以兔子繁殖为例引入的,故又称为“兔子数列”,其数值为1、1、2、3、5、8、13、21、34……在数学上,这一数列以如下递推的方法定义:F(0)=1,F(1)=1,F(n)=F(n-1)+F(n-2)(n

≥2,n

∈N*)。编写程序,输入任意一个n的值,计算F(n)。与数学中的函数定义和使用相似,把程序分成两部分进行编写:一部分是函数定义,用来完成F(n)的计算;另一部分是程序的定义,完成输入n的值,调用F(n)函数,输出程序结果。函数定义和调用函数参数的传递变量的作用域递归函数匿名函数函数调用函数定义和调用(一)函数的概念把具有独立功能的代码块组织为一个小模块就是函数。函数是组织好的、可重复使用的、用来实现单一或相关联功能的代码段。函数能提高应用的模块性和代码的重复利用率。Python提供了许多内置函数,比如print()、input()等。用户也可以自己创建函数(即自定义函数)。函数定义和调用(二)函数定义函数的使用可以分为定义和调用两个部分,先定义,后调用。Python使用def关键字来定义函数,语法格式如下。def函数名([参数列表]):"""函数_文档字符串"""函数体return[表达式]说明如下。(1)函数代码块以def关键词开头,后接函数名和圆括号及冒号。(2)参数列表负责接收传入函数的数据,可以包括一个或多个参数,也可以为空。(3)"""函数_文档字符串"""是注释,可以选择性地说明函数的功能及要传递的参数等。(4)函数体为函数被调用时执行的功能代码。函数体可以为空,使用pass语句作为占位符即可。(5)return[表达式]用于选择性地返回一个值给调用方。不带表达式的return相当于返回None(即无返回值)。函数定义和调用(三)函数调用函数在定义完成后不会立刻执行,只有在程序中被调用时才会执行。调用函数的方法比较简单,语法格式如下。函数名([参数列表])函数参数的传递1.位置参数的传递函数在被调用时会将实参按照相应位置依次传递给形参,即将第一个实参传递给第一个形参,将第二个实参传递给第二个形参,以此类推。2.关键字参数的传递函数调用使用关键字参数来确定传入的参数值,关键字参数的传递是通过“形参=实参”的格式将实参按照相应关键字传递给行参。3.默认参数的传递可以在定义函数时指定形参的默认值,调用函数时,可以选择是否给带有默认值的形参传值。如果默认参数的值没有传入,则被认为是默认值。变量的作用域(一)局部变量通常情况下,在函数内部定义的变量称为局部变量,它只能在函数内部使用,函数执行结束后局部变量就会被释放,此时无法再访问。在程序中,sum是在函数中定义的局部变量,只能在foo()函数内部使用。deffoo(x): #定义foo()函数sum=x+10 #定义局部变量sumreturn(sum)变量的作用域(二)全局变量(1)将变量定义在函数外,此变量在函数内部或外部区域均可以访问。当在foo()函数中输出变量时,输出的是“localx:10”,这称为变量的局部作用域。在foo()函数外部输出变量时,它会输出“globalx:5”,这称为变量的全局作用域。x=5 #定义全局变量xdeffoo(): #定义foo()函数x=10 #定义局部变量xprint("localx:",x)

#输出局部变量x的值foo() #调用foo()函数print("globalx:",x)

#输出全局变量x的值变量的作用域(二)全局变量(1)在函数体内定义,使用global关键字将没有定义过的变量声明为全局变量,语法格式如下。global变量在函数体内外,sum的值都正常输出。x=5 #定义全局变量xdeffoo(): #定义foo()函数globalsum #声明全局变量sumsum=x+10 #计算sum的值print("globalsum:",sum) #输出全局变量sum的值foo() #调用foo()函数print("globalsum:",sum) #输出全局变量sum的值输出结果如下。globalsum:15globalsum:15递归函数

(一)递归函数的定义与调用(1)calc_fact(n)是一个递归函数,它调用了自己。例如,calc_fact(6)=6*calc_fact(5),即每个函数将数字乘以该数字下面的数字的阶乘,直到它等于1。下面列出了calc_fact(n)函数调用及返回的步骤。#定义递归函数calc_fact(n)defcalc_fact(n):"""这是一个求整数阶乘的递归函数"""ifn==1: #如果n=1return1 #返回1else:return(n*calc_fact(n-1)) #返回n*(n-1)!的结果#递归函数调用程序n=6print("Thefactorialof",n,"is",calc_fact(n)) #输出递归函数结果值递归函数

(一)递归函数的定义与调用(2)当数字减少到1时,递归结束,这称为基本条件。每个递归函数都必须具有停止递归的基本条件,否则该函数将无限调用自身。calc_fact(6)

#第一层调用6*calc_fact(5)

#第二层调用6*5*calc_fact(4) #第三层调用6*5*4*calc_fact(3) #第四层调用6*5*4*3*calc_fact(2) #第五层调用6*5*4*3*2*calc_fact(1) #第六层调用6*5*4*3*2*1 #第六层返回6*5*4*3*2 #第五层返回6*5*4*6 #第四层返回6*5*24 #第三层返回6*120 #第二层返回720 #第一层返回递归函数

(二)递归函数的优点与缺点1.递归函数的优点(1)递归函数使代码看起来干净整洁。(2)使用递归可以将复杂的任务分解为若干个更简单的子问题。(3)与使用嵌套相比,使用递归更容易生成序列。2.递归的缺点(1)递归函数可能导致栈溢出错误,特别是在处理大型数据集或无限递归的情况下。(2)递归调用代价很高(效率低),因为它们占用大量内存和时间。(3)递归函数很难调试。匿名函数匿名函数就是指没有名字的函数。程序设计过程中需要使用一个函数,但又不想花费时间去命名这个函数时,可以使用匿名函数。Python中使用lambda关键字创建匿名函数,语法格式如下。result=lambda[arg1[,arg2,arg3,...,argn]]:expression①result变量用于调用lambda语句,接收lambda语句执行的结果。②lambda为定义匿名函数的关键字。③[arg1[,arg2,arg3,...,argn]]为参数列表,为非必选项,多个参数用逗号分隔。④expression为实现某一具体功能的表达式,为必选项,有且仅有一个。如果前面参数列表中有参数,则该表达式中必须使用这些参数。一、程序分析1.定义函数F(n)按照斐波那契数列的定义,这个数列前两项为1,从第3项开始,每一项都等于前两项之和,所以定义函数F(n)的描述如下。如果n==1orn==2,则返回1,否则返回F(n-1)+F(n-2)。2.主程序功能输入n的值,调用F(n)函数,输出程序结果。二、编写代码#斐波那契数列使用defF(n):

#定义斐波那契数列函数ifn==1orn==2:return1else:returnF(n-1)+F(n-2)

n=int(input("请输入n的值:")) #输入整数nprint(F(n))

#输出F(n)三、运行结果请输入n的值:15610生成器用生成器来实现斐波那契数列的代码如下。deff():a,b=1,1whileTrue:yieldaa,b=b,a+ba=f()foriinrange(10):

print(a.__next__(),end='')print()foriinf(): #使用for循环遍历生成器函数f()ifi>100:breakprint(i,end='')生成器运行结果如下。11235

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论