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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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函數的參數該種模式是參考了位置參數和關鍵字參數而進一步得到的,通過元組來存放事先未知的類似位置參數的參數,通過字典來存放事先未知的鍵值對(關鍵字參數)??勺冮L度參數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函數執(zhí)行的代碼...(省略)...')print('----testBend----')deftestA():print('----testAstart----')testB()print('----testAend----')testA()5.3函數嵌套與遞歸如果函數A中,調用了另外一個函數B,那么先把函數B中的任務都執(zhí)行完畢之后才會回到上次函數A執(zhí)行的位置。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. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論