Python语言程序设计4_第1页
Python语言程序设计4_第2页
Python语言程序设计4_第3页
Python语言程序设计4_第4页
Python语言程序设计4_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

1、第四周函数4.1函数的定义、调用与返1(1 )函数定义一def语句,格式如下:python view plain copy1. def name(parameters):【说明】函数名name :任何有效的Python标识符参数列表parameters:调用函数时传递给函数的值(个数=0,多个参数用,分隔)形式参数(形参):定义函数时给函数传递的参数形参只在函数内部有效实际参数(实参):调用函数时给函数传递的参数(可以是实数,变量,函数;必须要初始化)函数体body :函数被调用时执行的代码,由一至多个语句组成函数调用的一般形式:python view plain copy1. name(pa

2、rameters)函数返回:return语句一结束函数调用并返回结果return语句是可选的,可以出现在函数体的任意位置若无return语句,函数结束后将控制权返回给调用方函数接口 一返回值和参数函数传递信息的主要途径:通过函数返回值的方式传递信息通过参数传递信息【例】打印生日快乐歌歌词python view plain copy# 程序 4.1.1def happy():print(Happy birthday to you!)def sing(person):happy()happy()print(Happy birthday to, person + !)def main():sing(

3、Mike)print()main()【运行结果】Happy birthday to you!Happy birthday to you!Happy birthday to Mike!(2)函数的调用和返回值调用过程:Pmrson:Mik- dcT sing(person): happy() happy()ri(i f(prinlf11 Happy birth day, dear pcrson +)! happyf)函数的返回值:函数的返回值可以是变量或表达式三种形式一无返回值,单值和多值(用逗号分隔)无返回值等价于return None(None是表示没有任何东西的特殊类型)【例】设计两点距离

4、函数,求三角形周长python view plain copy# 程序 4.1.2import mathdef square(x):return x*xdef distance(x1,y1,x2,y2):dist = math.sqrt(square(x1 - x2) + square(y1 - y2)return distdef isTriangle(x1,y1,x2,y2,x3,y3):flag = (x1 - x2) * (y3 - y2) - (x3 - x2) * (y1 - y2) != 0return flagdef main():print(Please enter (x,y)

5、 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)=)#判断三个点是否构成三角形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

6、 the triangle is : 0:0.2f.format(perim)else:print(Kidding me? This is not a triangle!)main()【运行结果】Please enter (x,y) of three points in turn:Pointl: (x, y)= 1,3Point2: (x, y)= 2,2Point3: (x, y)= 3,4The perimeter of the triangle is : 5.89(3)改变参数值的函数:函数的形参只接受了实参的值,给形参赋值并不影响实参Python的参数是通过值来传递的(赋值)如果变量时

7、可变对象(如列表)返回到调用程序后,该对象会呈现被修改后的状态4.2函数与程序结构/递归(1)函数和程序结构:函数可以简化程序,使程序模块化函数可将较长程序分割成短小程序段,提高可读性(2)递归函数:递归一函数定义中使用函数自身的方法。例:阶乘递归的定义特征:.有一或多个基例是不需要再次递归的.所有的递归链都要以一个基例结尾注意:.递归每次调用都会引起新函数的开始.递归有本地值的副本,包括该值的参数.阶乘递归函数中:每次函数调用中的相关n值在中途的递归链暂时存储,并在函数返回时使用【例1】计算5!python view plain copy11. # 程序 4.2.1def fact(n):i

8、f n = 0:4.5.return 14.5.else:6.return n * fact(n-1)【例2】字符串反转Python列表有反转的内置方法方法1 :字符转换为字符列表,反转列表,列表转换回字符串方法2 :递归【卬0】输入:字符串处理:用递归的方法反转字符串输出:反转后的字符串【注意】构造递归函数,需要基例基例不进行递归,否则递归就会无限循环执行python view plain copy# 程序 4.2.2def reverse(s):if s =:return selse:return reverse(s1:) + s04.3函数实例分析【例】绘制如下图的二叉树【思路】(1 )

9、首先学习简单图形绘制的指令(2 )其次为树的绘制设计算法(1)Turtle 库:python view plain copyturtle.forward(15) #乌龟沿直线前行15个单位长度(默认绘制方向为x轴正半轴)乌龟角度逆时针旋转乌龟角度逆时针旋转90度(顺时针为right)乌龟提笔(落笔为pendown)乌龟到达指定坐标位置乌龟返回初始坐标乌龟以r为半径画圆设置乌龟速度turtle.left(90)turtle.penup()turtle.goto(x,y)turtle.home()turtle.circle(r)turtle.speed(x)turtle.pensize(x)tur

10、tle.penc010r(str1,str2)turtle.begin_fill()【例】绘制并填充五角星python view plain copy# 程序 4.3.1from turtle import Turtlep = Turtle()p.speed(3)p.pensize(5)p.color(black, yellow)p.begin_fill()for i in range(5):p.forward(200)p.right(144)p.end_fill()(2)代码如下:#设置画笔粗细#设置画笔线条颜色和填充色#开始填充颜色(完成填充用end_fill)python view pl

11、ain copy# 程序 4.3.2# drawtree.pyfrom turtle import Turtle, mainloopdef tree(plist, l, a, f):6.if l 5:7.1st =8.for p in plist:9.p.forward(l)#沿着当前的方向画画10.q = p.clone()11.p.left(a)12.q.right(a)13.lst.append(p)#将元素增加到列表的最后14.lst.append(q)15.tree(lst, l*f, a, f)16.def main():17.p = Turtle()18.p.color(green)19.p.pensize(5)20.p.hideturtle()21.p.speed(100)22.p.left(90)#调整画笔23.p.

温馨提示

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

评论

0/150

提交评论