版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Python科学计算及应用
Python函数计算函数的参数5.2函数嵌套与递归5.3函数的定义和调用5.1
Python函数计算函数的参数5.5函数嵌套与递归5.4函数定义的格式:5.1函数的定义和调用def函数名():代码例5.1
定义一个函数,能够完成打印个人信息的功能。defprintInfo():name='zhangsan'qq=88888888tel='159xxxxxxx1'address='湖北武汉市xxxx'print('==================================')print('姓名:%s'%name)print('QQ:%d'%(qq))print('手机号:%s'%tel)print('公司地址:%s'%address)print('==================================')printInfo()#调用函数5.2.1形参与实参5.2函数的参数defadd2num(a,b):c=a+breturncnum1=int(input('请输入第1个数:'))num2=int(input('请输入第2个数:'))print('sum=',add2num(num1,num2))定义时函数时小括号中的参数,用来接收参数用的,称为“形参”,调用时小括号中的参数,用来传递给函数用的,称为“实参”defdivid(a,b):shang=a//byushu=a%breturnshang,yushuprint(divid(11,3))#显示(3,2)例5.2输入一个字符串,自定义str_len()函数,求字符串的长度。defstr_len(str):#自定义str_len()函数
length=0forcinstr:length=length+1returnlength#调用自定义的str_len()函数len=str_len("http://***python***/")print(len)#再次调用str_len()函数len=str_len("Ilovepython!")print(len)5.2函数的参数例5.3编写一个函数,判断一个数是否为素数,调用该函数输出100以内的素数。defprime(a):b=int(a**0.5)+1#平方根加1foriinrange(2,b+1):ifa%i==0:returnFalsebreakifi==b:returnTrueresult=[2]forainrange(2,100):ifprime(a):result.append(a)print(result)5.2函数的参数5.2函数的参数5.2.2函数参数类型位置参数位置参数就是函数调用时传入的实参要与函数定义时的形参位置(先后顺序)一一对应,一般适用于参数较少,函数在调用时易于知道函数中参数的位置及意义defadd3(x,y,z):#x,y,z是必选参数result=x*y+zreturnresultprint(add3(1,2,3))print(add3(3,1,2))关键字参数关键字参数是指在函数调用时使用键值对的方式来进行制定参数的值,当函数中的参数较多,且在每次调用时,参数的顺序较多,不方便记忆,此时建议使用关键字参数的方式进行传参。5.2函数的参数defadd3(x,y,z):#x,y,z是必选参数
result=x+y+zreturnresultprint(add3(x=1,y=2,z=3))#等价add3(1,2,3)print(add3(z=3,y=2,x=1))#等价add3(1,2,3)默认参数某些参数的值不变,此时为了方便,不用每次对这些值进行传值,可以默认为固定的值,有且当需要更改时才进行传值,这些固定的值即为默认参数。defadd3(x,y=2,z=3):#x是必选参数,y,z是可选参数
result=x+y+zreturnresultprint(add3(1)#等价add3(1,2,3)print(add3(1,4))#等价add3(1,4,3)print(add3(1,4,6))5.2函数的参数5.2函数的参数该种模式是参考了位置参数和关键字参数而进一步得到的,通过元组来存放事先未知的类似位置参数的参数,通过字典来存放事先未知的键值对(关键字参数)。可变长度参数defadd(*p):#p必须是元组result=0foriinp:result=result+ireturnresultprint(add(1,2,3))#7print(add(1,2,3,4))#10print(add(1,2,3,4,6))#16
defadd(**p):#p必须是字典,形如key=value的参数result=0foriinp.values():result=result+ireturnresultprint(add(a=1,b=2,c=3,d=4))#10 print(add(x=1,y=2,z=3,m=4,n=5))#155.2函数的参数importmathdeftri_area(x,y,z):#海伦公式p=(x+y+z)/2,s=sqart(p*(p-x)(p-y)(p-z))if(x+y>zandx+z>yandz+y>x):p=(x+y+z)/2temp=p*(p-x)*(p-y)*(p-z)s=math.sqrt(temp)print("三角形面积为:",s)else:print("对不起,您输入的边长大小不能构成三角形!")a=float(input("请输入第一条边:",))b=float(input("请输入第二条边:",))c=float(input("请输入第三条边:",))tri_area(a,b,c)例5.4
编写函数判断三边能否构成三角形,输入三边,如是三角形则求面积。5.3.1嵌套函数deftestB():print('----testBstart----')print('这里是testB函数执行的代码...(省略)...')print('----testBend----')deftestA():print('----testAstart----')testB()print('----testAend----')testA()5.3函数嵌套与递归如果函数A中,调用了另外一个函数B,那么先把函数B中的任务都执行完毕之后才会回到上次函数A执行的位置。5.3.2递归函数5.3函数嵌套与递归deffactorial(num):if(num>1):result=num*factorial(num-1)else:result=1returnresultprint(factorial(3))如果一个函数在内部不是调用其它的函数,而是调用自己本身,这个函数就是递归函数。deffactorial(n):result=0ifn==1:returnn#阶乘为1的时候,结果为例1n=n*factorial(n-1)#n!=n*(n-1)!result+=n#阶乘之和
returnresultnum=int(input("请输入整数n:"))print(factorial(num))例5.5输入整数n,用递归的方法求1!+2!+3!+4!+5!+...+n!5.3函数嵌套与递归deffabonacci(n):ifn<=2:result=1returnresultresult=fabonacci(n-1)+fabonacci(n-2)#第三个数是前两个数的和
returnresultn=int(input("请输入整数n:"))print(fabonacci(n))例5.6根据斐波那契数列1,1,2,3,5,8,13,21,34,……,用递归的方法计算出第n个数。5.3函数嵌套与递归lambda[arg1[,arg2,.....argn]]:expression其中arg1,.....argn是可选参数。sum=lambdaa,b:a+bprint(sum(10,20))#调用sum函数print(sum(20,20))deffun(a,b,opt):print("a=",a)print("b=",b)print("result=",opt(a,b))fun(1,2,lambdax,y:x+y)注意:lambda函数能接收任何数量的参数但只能返回一个表达式的值。匿名函数的应用场合大部分在于将函数作为参数传递5.4匿名函数students=[{"name":"Tom","age":18},{"name":"James","age":19},{"name":"Alice","age":17}]stusdents.sort(key=lambdax:x['name'])局部变量:在函数内部定义的变量。不同的函数可以定义相同名字的局部变量。a=100#a是全局变量,作用域从此开始。deftest1():a=200#a是局部变量,作用域从此开始,屏蔽全局变量aa+=1print(a)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024至2030年中国萝卜糕行业投资前景及策略咨询研究报告
- 2024至2030年中国自动化仪器仪表数据监测研究报告
- 2024至2030年中国男士茶行业投资前景及策略咨询研究报告
- 2024至2030年中国电动座式平衡重式叉车数据监测研究报告
- 2024至2030年中国炊事车行业投资前景及策略咨询研究报告
- 2024至2030年中国折叠式手动液压堆垛车数据监测研究报告
- 2024至2030年中国定香剂行业投资前景及策略咨询研究报告
- 2024至2030年中国双面反射铝箔节能帘膜行业投资前景及策略咨询研究报告
- 初中信息技术课件全部课件
- 2020年成都市崇州市事业单位卫生系统招聘考试《医学基础知识》真题及答案解析
- 《法律效力层级》课件
- 医院新技术、新项目准入制度
- 焊接材料的质量控制和追溯规范
- 居民自建桩安装告知书回执
- 新能源及多能互补互补技术
- 荷载与结构设计方法《期末考试复习题》
- 《行香子》(树绕村庄)(课件)-九年级语文上册
- 高职院校师资建设五年规划
- 第14课 漂亮的房间(导学案)苏少版美术四年级上册
- 骶髂关节痛诊疗专家共识2021
- 危重患者早期识别与评估
评论
0/150
提交评论