大学教程 Python程序设计 第7讲-函数的设计和使用课件.pptx

上传人(卖家):晟晟文业 文档编号:4114847 上传时间:2022-11-11 格式:PPTX 页数:50 大小:1.30MB
下载 相关 举报
大学教程 Python程序设计 第7讲-函数的设计和使用课件.pptx_第1页
第1页 / 共50页
大学教程 Python程序设计 第7讲-函数的设计和使用课件.pptx_第2页
第2页 / 共50页
大学教程 Python程序设计 第7讲-函数的设计和使用课件.pptx_第3页
第3页 / 共50页
大学教程 Python程序设计 第7讲-函数的设计和使用课件.pptx_第4页
第4页 / 共50页
大学教程 Python程序设计 第7讲-函数的设计和使用课件.pptx_第5页
第5页 / 共50页
点击查看更多>>
资源描述

1、计算机科学导论计算机科学导论Python程序设计程序设计第第7讲讲 函数的设计和使用函数的设计和使用商务信息学院 信息管理系 教师:柳青 电子信箱:L 办公室:博识楼418 电话:67703852 答疑时间:周三34节,8-15周 周四5-8节,1-16周 周五1-4节,16、810、14、16、17周 夜间自习辅导时间:周四1112节,110周教师信息2期末考试题型(Python部分)共50分 填空题(5分)是非题(5分)程序设计题(40分)函数的设计和使用 问题的引入 函数基础知识6.1 问题的引入 计算三个圆的面积和周长,这三个圆的面积分别为2,3,4。运行结果思考 这三段基本相同的代码

2、是否能够只写一次呢?对于这样的问题,我们可以使用函数函数来解决,使计算圆面积和周长的这段代码得以重用。6.2 黑箱模型6.3 函数基础知识 6.3.1 函数的概念及定义 函数是一个具有特定功能的、被封装的、可重用的程序。给这个程序段取一个名字,就可以在其他程序的任何地方通过这个名称任意多次的运行这个语句块。函数定义格式:def 函数名(参数):(函数体)例1 定义一个输出函数,打印出Hello World!框图 开始调用函数sayHello()结束运行结果程序保存为eg1_say.py6.3.2 形参和实参 在定义函数时,函数名后面括号中的变量称为形参形参 在调用函数时,可以通过参数将一些值传

3、递给函数处理,这些在调用函数时提供给函数的值称为实参实参。例2 6.1节中的问题用函数调用的办法来编写程序。运行结果程序保存为eg2_area.py参数传递示意图大路小路思考1 通过改进eg1_say.py中的sayHello()函数,使主程序中调用该函数能实现如下功能:sayHello(3)能打印出3个Hello World!sayHello(5)能打印出5个Hello World!运行结果例3 编写函数,实现比较两个数的大小,并输出其中较大的数,并调用函数 运行结果程序保存为eg3_max.py6.3.3 return语句 return语句用来从一个函数中返回,即跳出函数,也可用retur

4、n语句从函数中返回一个值。例4 用return语句返回值。程序保存为eg4_max.py 运行结果例5 编写函数,判断一个年份是否为闰年。主程序输入一个年份,调用函数进行判断 运行结果 分析:闰年的定义是年份数能被4整除但不能被100整除,或者年份能被400整除。第1种做法:保存为eg5_year1.py第2种做法:保存为eg5_year2.py例6:编写函数,判断一个数是否为水仙花数。主程序输入一个数,调用函数进行判断 运行结果 分析:水仙花数是指一个 n 位数(n3),它的每个位上的数字的 n 次幂之和等于它本身。例如:13+53+33=153,则153是水仙花数。第1种做法:保存为eg6

5、_flower1.py第2种做法:示例7:思考2 编写求两个自然数的最大公约数的函数,采用辗转相除法。主程序输入两个数,调用函数求出这两个数的最大公约数,并输出。程序保存为eg7_div.py 辗转相除法的算法如下:1.两个自然数X、Y(保证X=Y)2.计算X除以Y的余数R 3.若R不等于0则用Y替换X,用R替换Y,计算X除以Y的余数R重复步骤3示例8:思考3 编写求素数的函数。用户从键盘输入一个整数n。系统产生n个100至999之间的随机整数x,调用该函数判断x是否为素数。若x为素数,则打印输出“x是素数”,否则输出“x不是素数”,其中x采用字符串格式化方式“%d”用具体的值替换。程序保存为

6、eg8_prime.py函数调用的步骤 假设程序P现在执行到了一个函数调用f(a),则经过四个步骤来处理这个调用:调用者P在调用点暂停执行(术语称为P挂起)函数f的形式参数被赋予实际参数a的值 执行f的函数体 F执行完毕后,控制返回到P中调用点的下一条语句为什么用函数?生成一个新的函数给你一个命名一组语句的机会,这使得你的程序更容易读和调试。通过避免重复调用代码,函数使得程序更小之后,如果你要做个变动,你只需在一处变动即可。将一个长程序分解为函数,允许你一次调试一部分,然后将它们集成为一个可行的整体。良好设计的函数经常对多个程序都有用。一旦你写出并调试了一个函数,你可以重用它。例2中计算圆的面

7、积和周长 运行结果思考3:在circle函数中不写print语句,如何实现计算圆的面积和周长并打印输出试验,结果的显示是什么?说明什么问题?运行结果思考思考4:得到如下的运行结果,程序如何改进?程序保存为eg2_circle.py函数小结1 定义函数时,需要确定函数名和参数个数;如果有必要,可以先对参数的数据类型做检查;函数体内部可以用return随时返回函数结果;函数执行完毕也没有return语句时,自动return None。函数可以同时返回多个值,但其实就是一个tuple。示例9:求阶乘的函数,保存为eg9_jc.py 运行结果:思考思考5:如何利用该函数写出求1!+2!+3!+n!的函

8、数?示例10 编写求1!+2!+3!+n!的函数 程序保存为eg10_add.py 运行结果:示例11递归函数 在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。用递归的思想来实现阶乘函数,然后调用该函数求某数的阶乘,程序保存为eg11_dg.py 0!=1 N!=n*(n-1)!执行过程 如果输入的值是3 ff(3)3*ff(2)3*(2*ff(1)3*(2*(1*ff(0)3*(2*(1*1)3*(2*1)3*(2)6递归函数的优缺点 使用递归函数的优点是逻辑简单清晰,缺点是过深的调用会导致栈溢出。6.4 变量的作用域 当引入函数的概念之后,就出现了变量作

9、用域的问题。变量起作用的范围称为变量的作用域。一个变量在函数外部定义和在函数内部定义,其作用域是不同的。如果我们用特殊的关键字定义一个变量,也会改变其作用域。6.4.1 局部变量 在函数内定义的变量只在该函数内起作用,称为局部变量。例12 使用局部变量 运行结果6.4.2 全局变量 如果想要在函数内部给一个定义在函数外的变量赋值,那么这个变量就不能是局部的,其作用域必须为全局的,能够同时作用于函数内外,称为全局变量,可以通过global来定义。一个变量已在函数外定义,如果在函数内需要为这个变量赋值,并要将这个赋值结果反映到函数外,可以在函数内用global声明这个变量,将其定义为全局变量。在函

10、数内部直接将一个变量声明为全局变量,在函数外没有声明,在调用这个函数之后,将增加为新的全局变量。例13 在函数内使用外部定义的全局变量 运行结果例14 把函数内定义的变量声明为全局变量 运行结果6.5 参数的类型 6.5.1 默认参数def 函数名(形参名=默认值,)例15 使用默认参数值 运行结果参数的类型默认参数 具有默认值的参数称为默认参数 如果要设置形参的默认值,必须将这个参数放到形参列表的末尾 不能先声明有默认值的形参,而后声明没有默认值的形参 def func(a,b=5)有效 def func(a=5,b)无效6.5.2 关键参数 如果某个函数有多个参数,在调用函数时,如果不想按

11、顺序为形参传递值,那么可以通过命名来为参数赋值,这称为关键参数。(指实参)例16 使用关键参数 运行结果6.5.3 可变长度参数 前面的介绍内容中,一个实参只能接收一个形参。有的时候让用户提供任意数量的参数是很有用的。在Python中用户可以给函数提供可变长度可变长度的参数。实现方法:在定义函数的时候,在参数前面使用标识符*就可以实现。例17 可变长度参数 实参是多个值,形参获得一个元组 可变长度参数指形参 运行结果例18 可变长度参数与其他普通参数联合使用 可变长度参数与其他普通参数组合,通常将可变长度参数放在形参列表的最后 运行结果例19 在形参前加上*,可以引用一个字典 实参通过关键参数指定键值对,形参获得一个字典 运行结果6.5.4 序列作实参 1.系列实参t传递给系列形参a 例20 运行结果6.5.4 序列作实参 2.系列实参t传递给多个单变量形参a,b,c 例21 运行结果练习 完成示例及思考题 分别用一般方法和递归函数来实现Fibonacci数列eg7_div.pyeg8_prime.pyeg2_circle.py

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(大学教程 Python程序设计 第7讲-函数的设计和使用课件.pptx)为本站会员(晟晟文业)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|