Python科學(xué)計算及應(yīng)用課件:Python函數(shù)計算_第1頁
Python科學(xué)計算及應(yīng)用課件:Python函數(shù)計算_第2頁
Python科學(xué)計算及應(yīng)用課件:Python函數(shù)計算_第3頁
Python科學(xué)計算及應(yīng)用課件:Python函數(shù)計算_第4頁
Python科學(xué)計算及應(yīng)用課件:Python函數(shù)計算_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

Python科學(xué)計算及應(yīng)用

Python函數(shù)計算函數(shù)的參數(shù)5.2函數(shù)嵌套與遞歸5.3函數(shù)的定義和調(diào)用5.1

Python函數(shù)計算函數(shù)的參數(shù)5.5函數(shù)嵌套與遞歸5.4函數(shù)定義的格式:5.1函數(shù)的定義和調(diào)用def函數(shù)名():代碼例5.1

定義一個函數(shù),能夠完成打印個人信息的功能。defprintInfo():name='zhangsan'qq=88888888tel='159xxxxxxx1'address='湖北武漢市xxxx'print('==================================')print('姓名:%s'%name)print('QQ:%d'%(qq))print('手機號:%s'%tel)print('公司地址:%s'%address)print('==================================')printInfo()#調(diào)用函數(shù)5.2.1形參與實參5.2函數(shù)的參數(shù)defadd2num(a,b):c=a+breturncnum1=int(input('請輸入第1個數(shù):'))num2=int(input('請輸入第2個數(shù):'))print('sum=',add2num(num1,num2))定義時函數(shù)時小括號中的參數(shù),用來接收參數(shù)用的,稱為“形參”,調(diào)用時小括號中的參數(shù),用來傳遞給函數(shù)用的,稱為“實參”defdivid(a,b):shang=a//byushu=a%breturnshang,yushuprint(divid(11,3))#顯示(3,2)例5.2輸入一個字符串,自定義str_len()函數(shù),求字符串的長度。defstr_len(str):#自定義str_len()函數(shù)

length=0forcinstr:length=length+1returnlength#調(diào)用自定義的str_len()函數(shù)len=str_len("http://***python***/")print(len)#再次調(diào)用str_len()函數(shù)len=str_len("Ilovepython!")print(len)5.2函數(shù)的參數(shù)例5.3編寫一個函數(shù),判斷一個數(shù)是否為素數(shù),調(diào)用該函數(shù)輸出100以內(nèi)的素數(shù)。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函數(shù)的參數(shù)5.2函數(shù)的參數(shù)5.2.2函數(shù)參數(shù)類型位置參數(shù)位置參數(shù)就是函數(shù)調(diào)用時傳入的實參要與函數(shù)定義時的形參位置(先后順序)一一對應(yīng),一般適用于參數(shù)較少,函數(shù)在調(diào)用時易于知道函數(shù)中參數(shù)的位置及意義defadd3(x,y,z):#x,y,z是必選參數(shù)result=x*y+zreturnresultprint(add3(1,2,3))print(add3(3,1,2))關(guān)鍵字參數(shù)關(guān)鍵字參數(shù)是指在函數(shù)調(diào)用時使用鍵值對的方式來進行制定參數(shù)的值,當(dāng)函數(shù)中的參數(shù)較多,且在每次調(diào)用時,參數(shù)的順序較多,不方便記憶,此時建議使用關(guān)鍵字參數(shù)的方式進行傳參。5.2函數(shù)的參數(shù)defadd3(x,y,z):#x,y,z是必選參數(shù)

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)默認(rèn)參數(shù)某些參數(shù)的值不變,此時為了方便,不用每次對這些值進行傳值,可以默認(rèn)為固定的值,有且當(dāng)需要更改時才進行傳值,這些固定的值即為默認(rèn)參數(shù)。defadd3(x,y=2,z=3):#x是必選參數(shù),y,z是可選參數(shù)

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函數(shù)的參數(shù)5.2函數(shù)的參數(shù)該種模式是參考了位置參數(shù)和關(guān)鍵字參數(shù)而進一步得到的,通過元組來存放事先未知的類似位置參數(shù)的參數(shù),通過字典來存放事先未知的鍵值對(關(guān)鍵字參數(shù))??勺冮L度參數(shù)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的參數(shù)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函數(shù)的參數(shù)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("對不起,您輸入的邊長大小不能構(gòu)成三角形!")a=float(input("請輸入第一條邊:",))b=float(input("請輸入第二條邊:",))c=float(input("請輸入第三條邊:",))tri_area(a,b,c)例5.4

編寫函數(shù)判斷三邊能否構(gòu)成三角形,輸入三邊,如是三角形則求面積。5.3.1嵌套函數(shù)deftestB():print('----testBstart----')print('這里是testB函數(shù)執(zhí)行的代碼...(省略)...')print('----testBend----')deftestA():print('----testAstart----')testB()print('----testAend----')testA()5.3函數(shù)嵌套與遞歸如果函數(shù)A中,調(diào)用了另外一個函數(shù)B,那么先把函數(shù)B中的任務(wù)都執(zhí)行完畢之后才會回到上次函數(shù)A執(zhí)行的位置。5.3.2遞歸函數(shù)5.3函數(shù)嵌套與遞歸deffactorial(num):if(num>1):result=num*factorial(num-1)else:result=1returnresultprint(factorial(3))如果一個函數(shù)在內(nèi)部不是調(diào)用其它的函數(shù),而是調(diào)用自己本身,這個函數(shù)就是遞歸函數(shù)。deffactorial(n):result=0ifn==1:returnn#階乘為1的時候,結(jié)果為例1n=n*factorial(n-1)#n!=n*(n-1)!result+=n#階乘之和

returnresultnum=int(input("請輸入整數(shù)n:"))print(factorial(num))例5.5輸入整數(shù)n,用遞歸的方法求1!+2!+3!+4!+5!+...+n!5.3函數(shù)嵌套與遞歸deffabonacci(n):ifn<=2:result=1returnresultresult=fabonacci(n-1)+fabonacci(n-2)#第三個數(shù)是前兩個數(shù)的和

returnresultn=int(input("請輸入整數(shù)n:"))print(fabonacci(n))例5.6根據(jù)斐波那契數(shù)列1,1,2,3,5,8,13,21,34,……,用遞歸的方法計算出第n個數(shù)。5.3函數(shù)嵌套與遞歸lambda[arg1[,arg2,.....argn]]:expression其中arg1,.....argn是可選參數(shù)。sum=lambdaa,b:a+bprint(sum(10,20))#調(diào)用sum函數(shù)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函數(shù)能接收任何數(shù)量的參數(shù)但只能返回一個表達式的值。匿名函數(shù)的應(yīng)用場合大部分在于將函數(shù)作為參數(shù)傳遞5.4匿名函數(shù)students=[{"name":"Tom","age":18},{"name":"James","age":19},{"name":"Alice","age":17}]stusdents.sort(key=lambdax:x['name'])局部變量:在函數(shù)內(nèi)部定義的變量。不同的函數(shù)可以定義相同名字的局部變量。a=100#a是全局變量,作用域從此開始。deftest1():a=200#a是局部變量,作用域從此開始,屏蔽全局變量aa+=1print(a)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論