




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
函數(shù)與模塊函數(shù)概述大問題問題1問題2……問題n函數(shù)函數(shù)的定義與調(diào)用函數(shù)的參數(shù)傳遞遞歸函數(shù)變量的作用域知識要點模塊函數(shù)的定義與調(diào)用“七樂彩”彩票中獎概率“七樂彩”,采用組合玩法,從01~30共30個號碼中選擇7個號碼,組合為一注投注號碼。根據(jù)中獎規(guī)則,各等獎的中獎概率如下:中獎級別中獎規(guī)則中獎概率一等獎7個基本號碼全中二等獎中6個基本號碼及特別號碼三等獎中6個基本號碼四等獎中5個基本號碼及特別號碼五等獎中5個基本號碼六等獎中4個基本號碼及特別號碼七等獎中4個基本號碼s1=1s2=1s3=1foriinrange(1,8):s1=s1*iforiinrange(1,24):s2=s2*iforiinrange(1,31):s3=s3*ip1=s1/(s1*1)*s2/(1*s2)/(s3/(s1*s2))print(p1)s1=1s2=1s3=1s4=1s5=1foriinrange(1,8):s1=s1*iforiinrange(1,7):s2=s2*iforiinrange(1,23):s3=s3*iforiinrange(1,31):s4=s4*iforiinrange(1,24):s5=s5*ip2=s1/(s2*1)*s3/(1*s3)*1/(s4/(s1*s5))print(p2)s1=1s2=1s3=1s4=1s5=1s6=1foriinrange(1,8):s1=s1*iforiinrange(1,7):s2=s2*iforiinrange(1,23):s3=s3*iforiinrange(1,22):s4=s4*iforiinrange(1,31):s5=s5*iforiinrange(1,24):s6=s6*ip3=s1/(s2*1)*s3/(1*s4)*1/(s5/(s1*s6))print(p3)s1=1s2=1s3=1s4=1s5=1s6=1s7=1foriinrange(1,8):s1=s1*iforiinrange(1,6):s2=s2*iforiinrange(1,3):s3=s3*iforiinrange(1,23):s4=s4*iforiinrange(1,22):s5=s5*iforiinrange(1,31):s6=s6*iforiinrange(1,24):s7=s7*ip4=s1/(s2*s3)*s4/(1*s5)*1/(s6/(s1*s7))print(p4)s1=1s2=1s3=1s4=1s5=1s6=1s7=1foriinrange(1,8):s1=s1*iforiinrange(1,6):s2=s2*iforiinrange(1,3):s3=s3*iforiinrange(1,23):s4=s4*iforiinrange(1,21):s5=s5*iforiinrange(1,31):s6=s6*iforiinrange(1,24):s7=s7*ip5=s1/(s2*s3)*s4/(s3*s5)*1/(s6/(s1*s7))print(p5)s1=1s2=1s3=1s4=1s5=1s6=1s7=1s8=1foriinrange(1,8):s1=s1*iforiinrange(1,5):s2=s2*iforiinrange(1,4):s3=s3*iforiinrange(1,23):s4=s4*iforiinrange(1,21):s5=s5*iforiinrange(1,3):s6=s6*iforiinrange(1,31):s7=s7*iforiinrange(1,24):s8=s8*ip6=s1/(s2*s3)*s4/(s5*s6)*1/(s7/(s1*s8))print(p6)s1=1s2=1s3=1s4=1s5=1s6=1s7=1foriinrange(1,8):s1=s1*iforiinrange(1,5):s2=s2*iforiinrange(1,4):s3=s3*iforiinrange(1,23):s4=s4*iforiinrange(1,20):s5=s5*iforiinrange(1,31):s6=s6*iforiinrange(1,24):s7=s7*ip7=s1/(s2*s3)*s4/(s5*s3)*1/(s6/(s1*s7))print(p7)“七樂彩”彩票中獎概率計算編程,計算并輸出“七樂彩”各等獎的中獎概率。
…………143行代碼代碼冗余程序結(jié)構(gòu)不清晰“七樂彩”彩票中獎概率計算中獎級別中獎概率一等獎二等獎三等獎四等獎五等獎六等獎七等獎
程序構(gòu)件:組合
程序構(gòu)件:階乘“七樂彩”彩票中獎概率計算計算各等獎中獎概率
階乘運算??!n,mn函數(shù)是程序中實現(xiàn)一定功能的程序代碼,供其他代碼調(diào)用完成特定工作。
函數(shù)f,接受參數(shù)n,返回??!函數(shù)的定義——定義階乘函數(shù)python中,函數(shù)定義的一般形式如下:def
<函數(shù)名>(<形式參數(shù)表>):<函數(shù)體>[return<返回值列表>]
12345deff(n):s=1foriinrange(1,n+1):s*=ireturns函數(shù)的定義——定義階乘函數(shù)使用def
保留字進行函數(shù)的定義。def
<函數(shù)名>(<形式參數(shù)表>):<函數(shù)體>[return<返回值列表>]
12345deff(n):s=1foriinrange(1,n+1):s*=ireturns函數(shù)的定義——定義階乘函數(shù)函數(shù)名必須符合python標識符的命名規(guī)則。def
<函數(shù)名>(<形式參數(shù)表>):<函數(shù)體>[return<返回值列表>]
12345deff(n):s=1foriinrange(1,n+1):s*=ireturns函數(shù)的定義——定義階乘函數(shù)形式參數(shù)用于傳遞值。def
<函數(shù)名>(<形式參數(shù)表>):<函數(shù)體>[return<返回值列表>]
12345deff(n):s=1foriinrange(1,n+1):s*=ireturns函數(shù)的定義——定義階乘函數(shù)形式參數(shù)用圓括號括起來,注意括號后有冒號。def
<函數(shù)名>(<形式參數(shù)表>):<函數(shù)體>[return<返回值列表>]
12345deff(n):s=1foriinrange(1,n+1):s*=ireturns函數(shù)的定義——定義階乘函數(shù)函數(shù)體由一行或多行語句組成,要注意縮進。def
<函數(shù)名>(<形式參數(shù)表>):
<函數(shù)體>[return<返回值列表>]
12345deff(n):s=1
foriinrange(1,n+1):s*=ireturns函數(shù)的定義——定義階乘函數(shù)return語句,表示函數(shù)結(jié)束,并帶回返回值。def
<函數(shù)名>(<形式參數(shù)表>):<函數(shù)體>[return<返回值列表>]
12345deff(n):s=1foriinrange(1,n+1):s*=i
returns函數(shù)的調(diào)用——調(diào)用階乘函數(shù)定義后的函數(shù),需要經(jīng)過“調(diào)用”才能運行。函數(shù)調(diào)用的一般形式如下:<函數(shù)名>(<實際參數(shù)表>)12345deff(n):s=1foriinrange(1,n+1):s*=ireturnsprint(f(5))#函數(shù)調(diào)用6程序構(gòu)件:階乘
運行結(jié)果120函數(shù)的定義——定義組合函數(shù)功能計算公式
參數(shù)n,m返回
程序構(gòu)件:組合
定義組合函數(shù),需要調(diào)用“階乘”函數(shù)。678defC(n,m):s=f(n)/(f(m)*f(n-m))returns主程序——調(diào)用組合函數(shù)910111213p1=C(7,7)*C(22,0)*C(1,0)/C(30,7)p2=C(7,6)*C(22,0)*C(1,1)/C(30,7)p3=C(7,6)*C(22,1)*C(1,0)/C(30,7)p4=C(7,5)*C(22,1)*C(1,1)/C(30,7)p5=C(7,5)*C(22,2)*C(1,0)/C(30,7)p6=C(7,4)*C(22,2)*C(1,1)/C(30,7)p7=C(7,4)*C(22,3)*C(1,0)/C(30,7)#輸出各等獎中獎概率…141516…程序構(gòu)件:組合
deff(n):s=1foriinrange(1,n+1):s=s*ireturnsdefC(n,m):s=f(n)/(f(m)*f(n-m))returnsp1=C(7,7)*C(23,0)/C(30,7)p2=C(7,6)*C(22,0)*C(1,1)/C(30,7)p3=C(7,6)*C(22,1)*C(1,0)/C(30,7)p4=C(7,5)*C(22,1)*C(1,1)/C(30,7)p5=C(7,5)*C(22,2)*C(1,0)/C(30,7)p6=C(7,4)*C(22,2)*C(1,1)/C(30,7)p7=C(7,4)*C(22,3)*C(1,0)/C(30,7)print("一等獎中獎概率:{:.10f}".format(p1))print("二等獎中獎概率:{:.10f}".format(p2))print("三等獎中獎概率:{:.10f}".format(p3))print("四等獎中獎概率:{:.10f}".format(p4))print("五等獎中獎概率:{:.10f}".format(p5))print("六等獎中獎概率:{:.10f}".format(p6))print("七等獎中獎概率:{:.10f}".format(p7))“七樂彩”彩票中獎概率計算910111213p1=C(7,7)*C(22,0)*C(1,0)/C(30,7)p2=C(7,6)*C(22,0)*C(1,1)/C(30,7)p3=C(7,6)*C(22,1)*C(1,0)/C(30,7)p4=C(7,5)*C(22,1)*C(1,1)/C(30,7)p5=C(7,5)*C(22,2)*C(1,0)/C(30,7)p6=C(7,4)*C(22,2)*C(1,1)/C(30,7)p7=C(7,4)*C(22,3)*C(1,0)/C(30,7)#輸出各等獎中獎概率…141516…22行代碼避免代碼重復程序結(jié)構(gòu)清晰“七樂彩”彩票中獎概率計算:運行結(jié)果一等獎中獎概率:0.0000004912二等獎中獎概率:0.0000034385三等獎中獎概率:0.0000756459四等獎中獎概率:0.0002269378五等獎中獎概率:0.0023828470六等獎中獎概率:0.0039714117七等獎中獎概率:0.0264760782>>>函數(shù)的調(diào)用處理函數(shù)的定義與調(diào)用定義一函數(shù),計算n!。
12345deff(n):#函數(shù)定義
s=1foriinrange(1,n+1):s*=ireturnsprint(f(5))#函數(shù)調(diào)用6函數(shù)的調(diào)用定義一函數(shù),計算n!。
12345deff(n):#n是形參
s=1foriinrange(1,n+1):s*=ireturnsprint(f(5))#5是實參61.參數(shù)傳遞通過函數(shù)名調(diào)用函數(shù)功能,將實參傳遞給對應形參。函數(shù)的調(diào)用定義一函數(shù),計算n!。
12345deff(n):s=1foriinrange(1,n+1):s*=ireturnsprint(f(5))62.執(zhí)行函數(shù)體轉(zhuǎn)去執(zhí)行被調(diào)用的函數(shù),執(zhí)行函數(shù)體語句。函數(shù)的調(diào)用定義一函數(shù),計算n!。
12345deff(n):s=1foriinrange(1,n+1):s*=i
returnsprint(f(5))63.函數(shù)返回函數(shù)返回,釋放形參及被調(diào)用函數(shù)中變量所占用的內(nèi)存單元,返回主程序繼續(xù)執(zhí)行。120函數(shù)的返回值函數(shù)的返回值return語句用來結(jié)束函數(shù),同時可以將函數(shù)運算的結(jié)果返回給函數(shù)被調(diào)用處。12345deff(n):s=1foriinrange(1,n+1):s*=i
returnsprint(f(5))6120函數(shù)的返回值函數(shù)可以沒有return,此時函數(shù)并不返回值。>>>defprinthello(): print("HelloPython")
>>>printhello()HelloPython函數(shù)的返回值return語句可以返回多個值,多個返回值以元組的形式組織。 >>>deff2(a,b): return2*a,3*b>>>f2(3,4)(6,12)>>>x,y=f2(3,4)>>>print(x,y)612函數(shù)的定義與調(diào)用——實例解析實例解析輸出100~200之間所有的素數(shù),并統(tǒng)計個數(shù)實例解析素數(shù)是一個大于1的正整數(shù),除了1和它本身以外,不能被其他正整數(shù)整除。100101102…200…nj:234……n-1i:實例解析編寫函數(shù)prime(n),判別n是否是素數(shù)。12345defprime(n):ifn==1:returnFalseelifn==2:returnTrue678910else:foriinrange(2,n):ifn%i==0:returnFalsereturnTrue實例解析主程序,遍歷100~200之間的每個數(shù),調(diào)用prime()函數(shù),判別并統(tǒng)計素數(shù)個數(shù)。678910count=0forjinrange(100,201):ifprime(j)==True:print(j,end="")count=count+1print("\ncount=",count)11101103107109113127131137139149151157163167173179181191193197199count=21>>>函數(shù)的參數(shù)傳遞形式參數(shù)和實際參數(shù)函數(shù)定義時的參數(shù),稱為形式參數(shù)(形參)。1234deff(n):#n是形參
s=1foriinrange(1,n+1):s*=i函數(shù)調(diào)用時的參數(shù),稱為實際參數(shù)(實參)。567returnsa=5print(f(a))#a是實參引用和對象a1引用對象Python中引用和對象是分離的。a=1b2引用對象b=1b=“hello”引用和對象a1引用對象Python中引用和對象是分離的。a=1b2引用對象b=2b=“hello”‘hello’參數(shù)傳遞:函數(shù)調(diào)用,實參傳遞給形參。12345defchange(listB):listB=[4,5,6]listA=[1,2,3]change(listA)print(listA)組合數(shù)據(jù)類型listA[1,2,3]listB實參形參參數(shù)傳遞:形參重新賦值,引用新對象。12345defchange(listB):
listB=[4,5,6]listA=[1,2,3]change(listA)print(listA)形參引用新對象listA[1,2,3]listB實參形參形參引用了新對象![4,5,6]參數(shù)傳遞:調(diào)用結(jié)束后,實參仍然不變。12345defchange(listB):listB=[4,5,6]listA=[1,2,3]change(listA)print(listA)listA[1,2,3]實參[1,2,3]參數(shù)傳遞:函數(shù)調(diào)用,實參傳遞給形參。12345defchange(listB):listB[0]=4listA=[1,2,3]change(listA)print(listA)listA[1,2,3]listB實參形參參數(shù)傳遞:修改形參引用對象的值,形參不引用新對象。12345defchange(listB):listB[0]=4listA=[1,2,3]change(listA)print(listA)listA[4,2,3]listB實參形參形參不引用新對象形參直接修改對象值!參數(shù)傳遞:調(diào)用結(jié)束后,實參會發(fā)生改變。12345defchange(listB):listB[0]=4listA=[1,2,3]change(listA)print(listA)listA[4,2,3]實參形參不引用新對象[4,2,3]結(jié)論:如果函數(shù)體內(nèi),對形參的引用賦值,則形參引用了新的對象,實參不會發(fā)生改變。如果在函數(shù)體內(nèi),修改形參指向的對象的值,則形參沒有引用新的對象,實參會發(fā)生改變。不同類型的參數(shù)不同類型的參數(shù):位置參數(shù)函數(shù)按照參數(shù)位置傳遞參數(shù),即位置參數(shù)。函數(shù)調(diào)用時語法形式如下:>>>defbmi(weight,height):print(“{:.2f}”.format(weight/height**2))>>>bmi(60,1.58)24.03<函數(shù)名>(<參數(shù)名>)不同類型的參數(shù):關(guān)鍵字參數(shù)按照參數(shù)名稱方式傳遞參數(shù),即關(guān)鍵字參數(shù)。函數(shù)調(diào)用時語法形式如下:>>>defbmi(weight,height):print(“{:.2f}”.format(weight/height**2))>>>bmi(height=1.58,weight=60)>>>24.03<函數(shù)名>(<參數(shù)名>=<實際值>)不同類型的參數(shù):可選參數(shù)函數(shù)的參數(shù)在定義時可以指定默認值。函數(shù)定義時語法形式如下:>>>defmultiply(x,y=10):print(x*y)>>>multiply(99)990>>>multiply(99,2)198def<函數(shù)名>(<必選參數(shù)列表>,<可選參數(shù)>=<默認值>):形式參數(shù)和實際參數(shù)參數(shù)名前有一個*,是可變長位置參數(shù),允許接受多個參數(shù)。函數(shù)調(diào)用時,將多個參數(shù)構(gòu)成一個元組,作為參數(shù)傳遞到函數(shù)中。1234deff1(*b):s=1foriinb:
s=s*ireturns567print(f1(1,2,3))print(f1(1,2,3,4,5))6120>>>不同類型的參數(shù):可變長關(guān)鍵字參數(shù)參數(shù)名前有**,是可變長關(guān)鍵字參數(shù),允許接受多個含參數(shù)名的參數(shù)。函數(shù)調(diào)用時,將參數(shù)名和參數(shù)構(gòu)成一個字典,傳遞到函數(shù)中。1234deff2(**c):print(c)f2(NO=”001”,name=“Tom”)f2(NO=”002”,name=“Jerry”,sex=”male”){'NO':'001','name':'Tom'}{'NO':'002','name':'Jerry','sex':'male'}可變長關(guān)鍵字參數(shù)——實例解析實例解析學生信息注冊登記實例解析12345defregister(number,name,**other):print("學號:",number,"姓名:",name)print(other)register('101','Tom')other={'性別':'M','系部':'computer','年齡':21}register('102','Jack',**other)6編寫函數(shù),實現(xiàn)學生信息注冊登記,要求必須登記學號、姓名,其他如性別、系部、年齡等信息不強制登記。實例解析學號:101姓名:Tom{}學號:102姓名:Jack{'系部':'computer','性別':'M','年齡':21}編寫函數(shù),實現(xiàn)學生信息注冊登記,要求必須登記學號、姓名,其他如性別、系部、年齡等信息不強制登記。遞歸函數(shù)遞歸的定義老和尚講故事德羅斯特效應遞歸函數(shù)函數(shù)之間可以相互調(diào)用,若一個函數(shù)直接或間接地調(diào)用了自己,這種調(diào)用稱為遞歸調(diào)用。f函數(shù)調(diào)用f函數(shù)直接調(diào)用f1函數(shù)調(diào)用f2f2函數(shù)調(diào)用f1函數(shù)間接調(diào)用遞歸函數(shù)遞歸算法的兩個基本特征:12遞推歸納:把問題轉(zhuǎn)化為比原問題規(guī)模小的同類問題遞歸終止:當問題小到一定規(guī)模,結(jié)束遞歸,逐層返回遞歸函數(shù)計算n!遞推歸納n!
(n-1)!
(n-2)!……遞歸終止
遞歸函數(shù)用遞歸的方法求階乘n!2412345deffac(n):ifn==1:return1else:returnfac(n-1)*nprint(fac(4))6遞歸函數(shù)遞歸調(diào)用過程:遞推、回歸fac(4)fac(4)4*fac(3)fac(3)fac(2)3*fac(2)2*fac(1)fac(1)16242實例解析字符串逆置實例解析字符串逆置,比如s='hello',逆置后s='olleh'處理過程:將首字符移動到末尾,剩余的字符串同樣處理。直至剩余字符串為空。遞推歸納reverse(s)=reverse(s[1:])+s[0]遞歸終止
實例解析用遞歸的方法進行字符串逆置olleh>>>12345defreverse(s):ifs[1:]=="":returns[0]else:returnreverse(s[1:])+s[0]print(reverse("hello"))6遞歸函數(shù)小結(jié)遞推歸納問題轉(zhuǎn)化為比原問題規(guī)模小的同類問題。遞歸終止
匿名函數(shù)匿名函數(shù)Lambda函數(shù),是一個匿名函數(shù)。語法如下:>>>lambdax,y:x+y<function<lambda>at0x035E00C0>>>>Lambda參數(shù)列表:表達式匿名函數(shù)綁定一個名字,語法如下:>>>f=lambdax,y:x+y>>>f(2,3)5>>><函數(shù)名>=Lambda參數(shù)列表:表達式等價于:def<函數(shù)名>(參數(shù)列表):return表達式實例解析匿名函數(shù)作為其他函數(shù)的參數(shù)實例解析列表ls=[(‘a(chǎn)’,3),(‘b’,9),(‘c’,6),(’d’,2)],根據(jù)每個元組的第二項數(shù)據(jù),即每個字符的頻次,降序排列輸出。>>>ls=[('a',3),('b',9),('c',6),('d',2)]>>>ls.sort(key=lambdax:x[1],reverse=True)>>>>>>print(ls)[('b',9),('c',6),('a',3),('d',2)]>>>變量的作用域變量的作用域根據(jù)程序中變量所在的位置和作用范圍,變量分為局部變量和全局變量。在一個函數(shù)內(nèi)定義的變量,稱為局部變量。在所有函數(shù)之外定義的變量,稱為全局變量。全局變量和局部變量n=30#全局變量deffun(x,y):n=x*y#局部變量
print("n=",n)fun(3,4)print("n=",n)123456n=12n=30>>>全局變量的聲明全局變量在函數(shù)內(nèi)部使用時,需要提前使用保留字global聲明,語法形式如下:global<全局變量>n=30#全局變量deffun(x,y):globaln#全局變量n=x*yprint("n=",n)fun(3,4)print("n=",n)1234567n=12n=12>>>全局變量若全局變量是組合數(shù)據(jù)類型ls=[1,2,3]#全局變量deffun():ls=[4,5,6]#給變量ls賦值,局部變量pr
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度競業(yè)協(xié)議失效一個月競業(yè)限制解除補償合同
- 二零二五年度大型商場裝修合同(含室內(nèi)外環(huán)境美化)
- 二零二五年度特色主題展臺設(shè)計制作安裝一體化合同
- 二零二五年度紋身技藝培訓與加盟合作協(xié)議
- 二零二五年度新能源產(chǎn)業(yè)臨時研發(fā)人員服務(wù)協(xié)議
- 2025年度網(wǎng)絡(luò)安全防護合同價款調(diào)整與網(wǎng)絡(luò)安全事件應對
- 二零二五年度虛擬現(xiàn)實產(chǎn)業(yè)利潤分配協(xié)議書
- 二零二五年度搏擊教練員免責責任書
- 農(nóng)業(yè)現(xiàn)代化技術(shù)推廣合作協(xié)議
- 智能建筑系統(tǒng)合同
- 新生兒腸道病毒感染
- 2025年度專業(yè)酒店裝修承攬合同
- 2025年度5G基站建設(shè)勞務(wù)合同范本
- (完整版)班主任量化考核細則
- 2025年中國鐵路鄭州局集團有限公司招聘筆試參考題庫含答案解析
- 2025年上半年永春縣農(nóng)文旅發(fā)展集團限公司公開招聘若干名工作人員易考易錯模擬試題(共500題)試卷后附參考答案
- 家庭康復服務(wù)的商業(yè)價值與發(fā)展趨勢
- 2025年危化企業(yè)安全教育培訓計劃
- 《HR的成長之路》課件
- 裝修完成情況報告范文
- 2024-2024年上海市高考英語試題及答案
評論
0/150
提交評論