《(高职)5.4 函数设计精选案例ppt课件.pptx》由会员分享,可在线阅读,更多相关《(高职)5.4 函数设计精选案例ppt课件.pptx(10页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、5.4 函数设计精选案例PYTHON 程序设计丁辉 商俊燕 范晓玲u5.1 函数基础函数基础u5.2 函数参数函数参数u5.3 变量的作用域变量的作用域u5.4 函数设计精选案例函数设计精选案例u小结小结2022年5月9日3第五章第五章 设计自己的积木块设计自己的积木块函数函数2022年5月9日4【例5-3】编写一个计算梯形面积的函数。分析:最基本的梯形面积计算公式是:s梯=(上底+下底) 高2。因此需要三个参数即上底、下底和高。返回值就是所计算的面积。#eg5_3.py#write by ding#2018-5-8 import mathdef t_Area(a,b,h): #对输入的参数进
2、行检查,确保是数值 if isinstance(a,(int,float) and isinstance(b,(int,float) and isinstance(h,(int,float): s=(a+b)*h/2 return s else: print(必须输入的是整数或实数。) print(t_Area(5,8,4)print(t_Area(5,8,k)5.4 函数设计精选案例2022年5月9日5【例5-4】编写一个函数,对所接收字符串中大小写字母个数进行统计,并将统计结果按先大写后小写字母的个数,采用元组的形式进行返回。分析:函数的参数是一个字符串,返回值是两个整数,用元组的形式进行
3、返回。#eg5_4.py#write by ding#2018-5-8 def s_Count(s): t=0,0 for ch in s: if ch.isupper(): t0+=1 elif ch.islower(): t1+=1 return tuple(t) print(s_Count(aA12KmlyuL08!#R)5.4 函数设计精选案例2022年5月9日6【例5-5】编写一函数,判断一个正整数是否是素数,如果是则返回True,否则返回False。#eg5_5.py#write by ding#2018-5-8import mathdef prime_judg(s): #由于ra
4、nge()不包含终值,所以要加1 for i in range(2,int(math.sqrt(s)+1): if s%i=0: break else: return True return False print(prime_judg(13)print(prime_judg(17)print(prime_judg(15)5.4 函数设计精选案例2022年5月9日7【例5-6】编写一函数,要求接收一个正的偶数,输出两个素数,并且这两个素数之和等于原来的正偶数。如果存在多组符合条件的素数,则全部输出。分析:函数的参数是一个正偶数,函数的功能是输出全部素数组合,不需要返回值。#eg5_6.py#w
5、rite by ding#2018-5-8import eg5_5def even_dec(m): if m%2=0 and m0 : #range()的终止值是int(m/2)+1,不能超过此值,否则会有重复的输出 for i in range(3,int(m/2)+1): if i%2=1 and eg5_5.prime_judg(i) and eg5_5.prime_judg(m-i): print(%d=%d+%d%(m,i,m-i) even_dec(34)【例5-6】中调用了【例5-5】的函数,因此调试时,需要把【例5-5】函数的代码导入,即import eg5_5。5.4 函数设
6、计精选案例2022年5月9日8【例5-7】微信抢红包很能吸引人,特别是抢到红包的人很开心。那么请编写一个函数来模拟微信红包金额的分配。分析:微信红包在发的时候,需要给定红包个数和总金额,因此函数的参数是2个。红包发完后,返回每个红包值(列表)。本函数关键需要解决的问题是:每个红包的金额一般是不相同的,也是不确定的。此处需要使用Python自带的random(随机数)模块,产生随机的红包金额。#eg5_7.py#write by ding#2018-5-8import randomdef hongbao(total,num=10): #total代表总金额,num代表红包个数,默认为10个红包
7、#list记录已经发的每个红包金额 list= #记录已发红包的总金额 sum=0 for i in range(num): #随机产生红包金额在1 剩余金额-剩余红包数,确保最后一个红包至少有1分钱 if i = num-1: t = total-sum else: t=random.randint(1,(total-sum)-(num-i) list.append(t) sum+=t return list record_1=hongbao(50) #使用默认红包数10print(record_1)record_2=hongbao(50,15)print(record_2)5.4 函数设计精选案例2022年5月9日9【例5-8】编写一函数,求n!#eg5_8.py#write by ding#2018-5-8def fact(n): if n=1: return 1 else: return n*fact(n-1) print(fact(20)代码分析:在函数fact()的定义中调用了fact()函数本身,这样的函数称之为递归函数。递归函数的优点是逻辑清晰,代码简洁,但也会存在效率较低的问题。递归函数定义时,一定要有一个结束递归的条件,如本例的”n=1”,当不断减小n值调用函数本身时,直到”n=1”结束,即执行return语句。5.4 函数设计精选案例2022年5月9日10
限制150内