


版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第四周 函数第四周 函数4.1 函数的定义、调用与返回(1)函数定义 def 语句,格式如下:python (1)函数定义 def 语句,格式如下:python view plain copy1. def ():(个数 = 0,多个参数用”,”分隔)形式参数(形参):形参只在函数内部有效【说明】函数名:任何有效的 Python 标识符参数列表:调用函数时传递给函数的值(个数 = 0,多个参数用”,”分隔)形式参数(形参):形参只在函数内部有效实际参数(实参):调用函数时给函数传递的参数(可以是实数,变量,函数;必须要初始化)函数体:函数被调用时执行的代码,由一至多个语句组成函数调用的一般形式:
2、python view plain copy1. 函数体:函数被调用时执行的代码,由一至多个语句组成函数调用的一般形式:python view plain copy1. ()函数返回: return 语句 结束函数调用并返回结果 return 语句是可选的,可以出现在函数体的任意位置 若无 return 语句,函数结束后将控制权返回给调用方函数接口 返回值和参数函数传递信息的主要途径: 通过函数返回值的方式传递信息 通过参数传递信息【例】打印生日快乐歌歌词pythonview plain copy1. # pythonview plain copy1. # 程 序 4.1.1defhappy(
3、):print(Happy birthday toyou!)defsing(person):happy()happy()print(Happy birthday to, person +!)defmain():sing(Mike)print()main()【运行结果】Happy birthday to you!Happy birthday to you!Happy birthday to Mike!(2)函数的调用和返回值 调用过程:(2)函数的调用和返回值 调用过程: 函数的返回值:函数的返回值可以是变量或表达式三种形式 无返回值,单值和多值(用逗号分隔) 函数的返回值:函数的返回值可以是变
4、量或表达式三种形式 无返回值,单值和多值(用逗号分隔)无返回值 等价于 return None(None 是表示没有任何东西的特殊类型)【例】设计两点距离函数,求三角形周长【例】设计两点距离函数,求三角形周长pythonpythonview plain copy1. 1. # 程 序 4.1.2importmathdefsquare(x):return x*xdefdistance(x1,y1,x2,y2):dist = math.sqrt(square(x1 - x2) + square(y1 -y2)return distdefisTriangle(x1,y1,x2,y2,x3,y3):9
5、.flag = (x1 - x2) * (y3 - y2) - (x3 - x2) * (y1 - y2) !=0return flagdefmain():12.13.14.15.16.17.18.19.20.print(Please enter (x,y) of three points in turn:)# 获取用户输入的三个坐标点x1, y1 = eval(input(Point1: (x, y) =)x2, y2 = eval(input(Point2: (x, y) =)x3,y3 = eval(input(Point3: (x, y) = )21.22.23.# 判断三个点是否构成
6、三角形if (isTriangle(x1,y1,x2,y2,x3,y3): # 算三角形周长perim = distance(x1,y1,x2,y2) + distance(x2,y2,x3,y3) +distance(x1, y1,x3,y3)print(The perimeter of the triangle is : 0:0.2f.format(perim)else:print(Kidding me? This is not a triangle!)24.main()【运行结果】Please enter (x,y) of three points in turn:Please ente
7、r (x,y) of three points in turn:Point1: (x, y) = 1,3Point2: (x, y) = 2,2Point3: (x, y) = 3,4The perimeter of the triangle is : 5.89(3)改变参数值的函数: 函数的形参只接受了实参的值,给形参赋值并不影响实参 Python 的参数是通过值来传递的(赋值) 函数的形参只接受了实参的值,给形参赋值并不影响实参 Python 的参数是通过值来传递的(赋值) 如果变量时可变对象(如列表)返回到调用程序后,该对象会呈现被修改后的状态4.2 函数与程序结构/递归(1)函数和程序
8、结构: 函数可以简化程序,使程序模块化 函数可将较长程序分割成短小程序段,提高可读性(2)递归函数: 递归 函数定义中使用函数自身的方法。例:阶(1)函数和程序结构: 函数可以简化程序,使程序模块化 函数可将较长程序分割成短小程序段,提高可读性(2)递归函数: 递归 函数定义中使用函数自身的方法。例:阶乘 递归的定义特征:1. 有一或多个基例是不需要再次递归的2. 所有的递归链都要以一个基例结尾 注意:2. 所有的递归链都要以一个基例结尾 注意:递归每次调用都会引起新函数的开始递归有本地值的副本,包括该值的参数阶乘递归函数中:每次函数调用中的相关n在中途的递归链暂时存储,并在函数返回时使用【例
9、 1】计算 5!在中途的递归链暂时存储,并在函数返回时使用【例 1】计算 5!pythonpythonview plain copy1. 1. # 程 序 4.2.12. def fact(n): 3.if n =4.5.4.5.6.return 1else:return n * fact(n-1)【例 2】字符串反转【例 2】字符串反转Python 列表有反转的内置方法方法 1:字符转换为字符列表,反转列表,列表转换回字符串方法 2:递归【IPO】输入:字符串处理:用递归的方法反转字符串方法 2:递归【IPO】输入:字符串处理:用递归的方法反转字符串输出:反转后的字符串【注意】 构造递归函数
10、,需要基例 基例不进行递归,否则递归就会无限循环执行pythonview plain copypythonview plain copy1. # 程 序 4.2.22. defreverse(s):3.if s =:return selse:return reverse(s1:) +s04.3 函数实例分析【例】绘制如下图的“二叉树”【思路】(1)首先学习简单图形绘制的指令(2)其次为树的绘制设计算法(1)Turtle 库:(1)Turtle 库:python python view plain copy1.2.1.2.3.4.5.6.7.8.9.turtle.forward(15) 15个单
11、位长度(x轴正半轴)turtle.left(90)turtle.penup() turtle.home() turtle.speed(x)turtle.pensize(x)90度(right)# 乌龟提笔(落笔为 pendown) # 乌龟到达指定坐标位置# 乌龟返回初始坐标r设置乌龟速度# 设置画笔粗细turtle.pencolor(str1,str2)设置画笔线条颜色和填充色turtle.begin_fill()开始填充颜色(end_fill)【例】绘制并填充五角星python python view plain copy1. 1. # 程 序 4.3.1from turtle impor
12、tTurtlep =Turtle()p.speed(3)p.pensize(5)p.color(black,yellow)p.begin_fill()for i inrange(5):p.forward(200)p.right(144)p.end_fill()(2)代码如下:python view plain copypython view plain copy1.2.3.4.5.# 程序 4.3.2# drawtree.pyfrom turtle import Turtle, mainloopdef tree(plist, l, a, f):6.6.7.8.9.10.11.12.13.14.15.if l 5:lst = for p in plist: p.forward(l) q =p.clone() p.left(a) q.right(a) tree(lst, l*f, a, f)# 沿着当前的方向画画# 将元素增加到列表的最后16. defmain():17.18.19.20.21.22.23.24.25.26.27.28.p = Turtle()p.color(green)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 项目评审表范表
- 四年级数学几百几十数乘以一位数综合监控口算题带答案
- 读书建议书范文
- 面试自我介绍范文集锦15篇
- 采购部半年工作总结
- 几百几十加减几百几十综合考核口算题大全附答案
- 铁路班组长心得体会
- 药物管理和使用
- 新中式高层居住区规划文本
- 中国饮食文化知到课后答案智慧树章节测试答案2025年春山东农业大学
- 《心理健康教育主题班会》主题
- 《义务教育语文课程标准》2022年修订版原版
- JT-T-795-2011事故汽车修复技术规范
- 个人借条电子版模板
- 柳公权玄秘塔碑(高清打印版字帖)
- (精选word)3v3篮球比赛记录表
- 智能家居控制系统设计开题报告
- 中国传统七夕节牛郎织女浪漫汇 课件(共31张ppt) 传统文化
- 消费者行为学课件
- 【小升初】部编版2022-2023学年四川省绵阳市语文升学分班考真题专项模拟试卷(04 现代文阅读)含解析
- 泌尿外科手术配合-ppt课件
评论
0/150
提交评论