![Python程序開發(fā)基礎(chǔ) 課件 項目6 搭建自己的模塊_第1頁](http://file4.renrendoc.com/view2/M00/25/2D/wKhkFmaWCGGAHMAbAAC1Z72bqRU582.jpg)
![Python程序開發(fā)基礎(chǔ) 課件 項目6 搭建自己的模塊_第2頁](http://file4.renrendoc.com/view2/M00/25/2D/wKhkFmaWCGGAHMAbAAC1Z72bqRU5822.jpg)
![Python程序開發(fā)基礎(chǔ) 課件 項目6 搭建自己的模塊_第3頁](http://file4.renrendoc.com/view2/M00/25/2D/wKhkFmaWCGGAHMAbAAC1Z72bqRU5823.jpg)
![Python程序開發(fā)基礎(chǔ) 課件 項目6 搭建自己的模塊_第4頁](http://file4.renrendoc.com/view2/M00/25/2D/wKhkFmaWCGGAHMAbAAC1Z72bqRU5824.jpg)
![Python程序開發(fā)基礎(chǔ) 課件 項目6 搭建自己的模塊_第5頁](http://file4.renrendoc.com/view2/M00/25/2D/wKhkFmaWCGGAHMAbAAC1Z72bqRU5825.jpg)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
項目6
搭建自己的模塊項目內(nèi)容模擬計算器獲取兔子數(shù)列0102項目目標(biāo)知識目標(biāo)熟悉函數(shù)的定義和調(diào)用熟悉函數(shù)參數(shù)的傳遞方式熟悉特殊函數(shù)的分類和應(yīng)用了解常用的內(nèi)置函數(shù)會定義并調(diào)用函數(shù)會利用函數(shù)解決代碼復(fù)用問題會利用匿名函數(shù)和遞歸函數(shù)解決實際問題技能目標(biāo)
模擬計算器01
眾所周知,隨著程序功能的提升,程序開發(fā)的難度在不斷升級,程序的復(fù)雜度也變得越來越高,如果依舊按照以前的方法編寫代碼,那么程序代碼的可讀性和后期的維護管理會給開發(fā)人員帶來更多的困擾。
為了解決以上問題,提高代碼的復(fù)用性,更好地組織代碼邏輯和結(jié)構(gòu),我們引入了“函數(shù)”,即“模塊”。
對于函數(shù),先要清楚什么是函數(shù)?如何定義和調(diào)用函數(shù)?弄清楚這些我們就可以求解問題,完成任務(wù)。函數(shù)的概念
函數(shù)指被封裝起來的、實現(xiàn)某種功能的一段代碼。Python安裝包、標(biāo)準庫中自帶的函數(shù)統(tǒng)稱為內(nèi)置函數(shù),用戶自己編寫的函數(shù)稱為自定義函數(shù),不管是哪種函數(shù),其調(diào)用方式是一樣的。
就像一個人站在裝滿鏡子的房間中,看到的影像就是遞歸的結(jié)果。遞歸只需少量代碼就可描述出解題過程所需要的多次重復(fù)計算,大大地減少了程序的代碼量。函數(shù)的定義Python中使用關(guān)鍵字def定義函數(shù)。def函數(shù)名([參數(shù)列表]):["函數(shù)文檔字符串"]
函數(shù)體[return語句]接收傳入函數(shù)中的數(shù)據(jù),可省略函數(shù)的說明信息,可省略將結(jié)果返回給函數(shù)調(diào)用者若函數(shù)的參數(shù)列表為空,這個函數(shù)稱為無參函數(shù)。函數(shù)定義之時可以設(shè)置參數(shù)列表,以實現(xiàn)更靈活的功能。defweather():print("*"*13)print("日期:10月7日")print("溫度:14~28℃")print("空氣狀況:良")print("*"*13)defmodify_weather(today,temp,air_quality):print("*"*13)print(f"日期:{today}")print(f"溫度:{temp}")print(f"空氣狀況:{air_quality}")print("*"*13)定義好的函數(shù)直到被程序調(diào)用時才會執(zhí)行。函數(shù)的調(diào)用格式如下:函數(shù)名([參數(shù)列表])例如,調(diào)用weather()函數(shù)。weather()*************日期:10月7日溫度:14~28℃空氣狀況:良*************調(diào)用modify_weather函數(shù)。modify_weather(‘10月6日','15~26℃','優(yōu)')*************日期:10月6日溫度:15~26℃空氣狀況:優(yōu)*************
實例1:定義一個函數(shù),用于判斷輸入的年份是否是閏年,具體要求如下:(1)輸出提示信息:請輸入一個年份。(2)輸出判斷結(jié)果:若是閏年,則輸出“是閏年”,否則輸出“不是閏年”。defis_leapyear():year=int(input("請輸入一個年份:"))if(year%4==0andyear%100!=0)oryear%400==0:print("是閏年")else:print("不是閏年")is_leapyear()
根據(jù)題意,利用函數(shù)的定義格式定義一個無參函數(shù),將輸入的年份放在函數(shù)體內(nèi),其程序如下:defis_leapyear(year):if(year%4==0andyear%100!=0)oryear%400==0:print("是閏年")else:print("不是閏年")year=int(input('請輸入一個年份:'))is_leapyear(year)如果將輸入的年份作為函數(shù)的參數(shù),則可以定義一個有參函數(shù),其代碼如下:
函數(shù)的參數(shù)傳遞是指將實際參數(shù)傳遞給形式參數(shù)的過程。當(dāng)調(diào)用帶有參數(shù)的函數(shù)時需要傳入?yún)?shù),這個傳入的參數(shù)稱為實際參數(shù)。而在定義有參函數(shù)時,函數(shù)名后面的參數(shù)則被稱為形式參數(shù)。
根據(jù)參數(shù)傳遞形式的不同,函數(shù)的參數(shù)可分為:
位置參數(shù)關(guān)鍵字參數(shù)默認值參數(shù)不定長參數(shù)函數(shù)參數(shù)的傳遞位置參數(shù)的傳遞調(diào)用函數(shù)時,解釋器會將函數(shù)的實際參數(shù)按照位置順序依次傳遞給形式參數(shù)。defdivision(num_one,num_two):print(num_one/num_two)division(6,2)關(guān)鍵字參數(shù)的傳遞關(guān)鍵字參數(shù)是通過“形式參數(shù)=實際參數(shù)”的格式將實際參數(shù)與形式參數(shù)相關(guān)聯(lián),根據(jù)形參的名稱進行參數(shù)傳遞。definfo(name,age,address):print(f'姓名:{name}')print(f'年齡:{age}')print(f'地址:{address}')info(name=“李婷婷”,age=21,address=“北京")默認參數(shù)傳遞定義函數(shù)時若指定形式參數(shù)的默認值。調(diào)用函數(shù)時,若未給默認參數(shù)傳值:使用參數(shù)的默認值;若給默認參數(shù)傳值:使用實際參數(shù)的值;defconnect(ip,port=3306):print(f"連接地址為:{ip}")print(f"連接端口號為:{port}")print("連接成功")connect('127.0.0.1')connect(ip='127.0.0.1',port=8080)
實例2:編寫函數(shù),計算20×19×18×……×3的結(jié)果。defprot(m,n=3):pro=1foriinrange(m,n-1,-1):pro*=ireturnproprint(prot(m=20))不定長參數(shù)的傳遞如果傳入函數(shù)中的參數(shù)的個數(shù)不確定,可以使用不定長參數(shù)。不定長參數(shù)也稱可變參數(shù),此種參數(shù)接收參數(shù)的數(shù)量可以任意改變。定義格式:def函數(shù)名([formal_args,]*args,**kwargs):
函數(shù)體[return語句]*args和**kwargs都是不定長參數(shù),它們可搭配使用,亦可單獨使用。不定長參數(shù)*args用于接收不定數(shù)量的位置參數(shù),調(diào)用函數(shù)時傳入的所有參數(shù)被*args接收后以元組形式保存。deftest(*args):
print(args)test(1,2,3,'a','b','c')(1,2,3,'a','b','c')**kwargs用于接收不定數(shù)量的關(guān)鍵字參數(shù),調(diào)用函數(shù)時傳入的所有參數(shù)被**kwargs接收后以字典形式保存。deftest(**kwargs):print(kwargs)test(a=1,b=2,c=3,d=4){'c':3,'d':4,'a':1,'b':2}
實例3:給定一組成績,求平均成績。defaverage(*a):
sum,n=0foriina:
sum+=i
n=n+1
ave=sum/nreturnaveprint(average(98,93,97,88,79,90))函數(shù)的返回值
如果函數(shù)體經(jīng)過處理以后有計算結(jié)果,除了直接利用print()函數(shù)輸出,還可以在函數(shù)體中通過return語句返回主調(diào)函數(shù)。因此,函數(shù)中的return語句可以在函數(shù)結(jié)束時將數(shù)據(jù)返回程序,同時讓程序回到函數(shù)被調(diào)用的位置繼續(xù)執(zhí)行。deffilter_words(words):#定義過濾敏感詞的函數(shù) if'躺平'inwords: new_words=words.replace('躺平','***')
returnnew_words>>>result=filter_words('目前情況我們不能躺平!')>>>print(result)目前情況我們不能***!
當(dāng)return語句返回一個值時,會被保存在變量中,當(dāng)return語句返回多個值時,這些值會被保存在元組中。變量的作用域變量的作用域是指變量的作用范圍。根據(jù)作用范圍,Python中的變量分為局部變量與全局變量。局部變量局部變量是在函數(shù)內(nèi)定義的變量,只在定義它的函數(shù)內(nèi)生效。局部變量只能在函數(shù)內(nèi)部使用,不能在函數(shù)外部使用。defuse_var():
name='python'#局部變量print(name)#函數(shù)內(nèi)訪問use_var()print(name)#函數(shù)外訪問pythonNameError:name'name'isnotdefined全局變量全局變量是在函數(shù)外定義的變量,它在程序中任何位置都可以被訪問。函數(shù)中只能訪問全局變量,但不能修改全局變量。count=10#全局變量defuse_var():print(count)#函數(shù)內(nèi)訪問count=0#修改全局變量use_var()print(count)#函數(shù)外訪問
1010若要在函數(shù)內(nèi)部修改全局變量的值,需先在函數(shù)內(nèi)使用關(guān)鍵字“global”進行聲明。count=10defuse_var():
globalcount#聲明全局變量count=0use_var()print(count)0全局變量的值變?yōu)?。實例4:冰雹猜想。冰雹猜想是一種數(shù)學(xué)現(xiàn)象,它的具體內(nèi)容是以一個正整數(shù)n為例,如果n為偶數(shù),就將它變?yōu)閚/2,若n/2為奇數(shù),則將它乘以3加1,即3n/2+1。不斷重復(fù)這樣的運算,經(jīng)過有限步后,必然會得到1。根據(jù)數(shù)學(xué)家們的攻關(guān)研究表明,所有小于7×1011的自然數(shù)都符合這個規(guī)律。本實例要求編寫代碼,計算用戶輸入的數(shù)據(jù)按照以上規(guī)律經(jīng)過多少次運算后可以變成1。#冰雹猜想defguess(number):i=0 #統(tǒng)計變換的次數(shù)original_number=number #記錄最初的numberwhilenumber!=1:ifnumber%2==0: #number為偶數(shù)number=number/2else: #number為奇數(shù)number=number*3+1i+=1print(f"{original_number}經(jīng)過{i}次變換后回到1")num=int(input("請輸入一個大于1的正整數(shù):"))guess(num)任務(wù)實踐-模擬計算器
計算器極大地提高了人們進行數(shù)字計算的效率與準確性,平時的簡單計算都離不開計算器。計算器最基本的功能是四則運算。本任務(wù)要求編寫程序,利用函數(shù)實現(xiàn)計算器的四則運算功能。
任務(wù)實踐-模擬計算器
根據(jù)題意,計算器的四則運算功能是指加、減、乘、除,它可實現(xiàn)計算兩個數(shù)的和、差、積、商。因此,定義一個包含兩個參數(shù)的函數(shù),分別接收用戶輸入的任意兩個數(shù),而函數(shù)主要用來實現(xiàn)這兩個數(shù)的加、減、乘、除4項運算,具體執(zhí)行哪種運算需用戶輸入相應(yīng)的運算符,然后根據(jù)運算符來計算結(jié)果即可。代碼如下:#模擬計算器defoper(x,y):operator=input('請選擇要執(zhí)行的運算:+、-、*、/'+'\n')ifoperator=="+":print("計算結(jié)果為:",x+y)elifoperator=='-':print("計算結(jié)果為:",x-y)elifoperator=='*':print("計算結(jié)果為:",x*y)elifoperator=='/':ify==0:print('被除數(shù)不能為0')else:print("計算結(jié)果為:",x/y)a=int(input('請輸入第一個數(shù):'))b=int(input('請輸入第二個數(shù):'))oper(a,b)根據(jù)函數(shù)定義和調(diào)用方法,程序如下:獲取兔子序列02函數(shù)的特殊形式
在Python中,除了前面介紹的標(biāo)準函數(shù)和自定義函數(shù),還提供了兩個具有特殊形式的函數(shù),即匿名函數(shù)和遞歸函數(shù)。匿名函數(shù)匿名函數(shù)是無需函數(shù)名標(biāo)識的函數(shù),它的函數(shù)體只能是單個表達式。Python中使用關(guān)鍵字lambda定義匿名函數(shù)。函數(shù)名=lambda<參數(shù)列表>:<表達式>匿名函數(shù)并非沒有名字,而是將函數(shù)名作為函數(shù)結(jié)果返回。等價于:def函數(shù)名(<參數(shù)列表>):return<表達式>匿名函數(shù)與普通函數(shù)主要有以下不同:普通函數(shù)匿名函數(shù)需要使用函數(shù)名進行標(biāo)識無需使用函數(shù)名進行標(biāo)識函數(shù)體中可以有多條語句函數(shù)體只能是一個表達式可以實現(xiàn)比較復(fù)雜的功能只能實現(xiàn)比較單一的功能可以被其它程序使用不能被其它程序使用area=lambdaa,h:(a*h)*0.5(直角三角形面積)print(area(3,4))6.0遞歸函數(shù)
遞歸是一個函數(shù)過程在定義中直接調(diào)用自身的一種方法,它通常把一個大型的復(fù)雜問題層層轉(zhuǎn)化為一個與原問題相似,但規(guī)模較小的問題進行求解。如果一個函數(shù)中調(diào)用了函數(shù)本身,這個函數(shù)就是遞歸函數(shù)。遞歸函數(shù)只需少量代碼就可描述出解題過程所需要的多次重復(fù)計算,大大地減少了程序的代碼量。函數(shù)遞歸調(diào)用時,需要確定兩點:一是遞歸公式,二是邊界條件。遞歸公式是遞歸求解過程中的歸納項,用于處理原問題以及與原問題規(guī)律相同的子問題。邊界條件即終止條件,用于終止遞歸。遞歸函數(shù)的定義格式:def函數(shù)名([參數(shù)列表]):if邊界條件:return結(jié)果else:return遞歸公式
調(diào)用遞歸函數(shù)時,也需要確定兩點,一是遞歸公式,二是邊界條件。遞歸公式是遞歸求解過程中的歸納項,用于處理原問題及與原問題規(guī)律相同的子問題。邊界條件即終止條件,用于終止遞歸。實例5:deffactorial(n):ifn==1orn==0:return1else:returnn*factorial(n-1)n=int(input(“n=“))print(factorial(n))
常用內(nèi)置函數(shù)Python內(nèi)置了一些實現(xiàn)特定功能的函數(shù),這些函數(shù)無需由Python使用者重新定義便可直接使用。函數(shù)說明abs()計算絕對值,其參數(shù)必須是數(shù)字類型len()返回序列對象(字符串、列表、元組等)的長度map()根據(jù)提供的函數(shù)對指定的序列做映射help()用于查看函數(shù)或模塊的使用說明ord()用于返回Unicode字符對應(yīng)的碼值chr()與ord()功能相反,用于返回碼值對應(yīng)的Unicode字符filter()用于過濾序列,返回由符合條件的元素組成的新序列abs()函數(shù)abs()函數(shù)用于計算絕對值,其參數(shù)必須是數(shù)字類型。如果參數(shù)是一個復(fù)數(shù),那么abs()函數(shù)返回的絕對值是此復(fù)數(shù)與它的共軛復(fù)數(shù)乘積的平方根。print(abs(-5))print(abs(8+3j))ord()函數(shù)ord()函數(shù)用于返回字符在Unicode編碼表中對應(yīng)的碼值,其參數(shù)是一個
字符。print(ord('a'))prin
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中日技術(shù)合同(三)
- 個人房屋裝修服務(wù)合同范文大全
- 續(xù)簽合同申請書
- 中外合資經(jīng)營企業(yè)合同(新能源電池制造)
- 個人合作合同:共享發(fā)展計劃
- 個人合伙經(jīng)營合同范文詳解
- 專業(yè)鋼結(jié)構(gòu)維修改造合同范本
- 中外跨境電商合作協(xié)議合同范本
- 產(chǎn)品加工合同(輕工領(lǐng)域)
- 兩人股東權(quán)益分配合同樣本
- 流行文化對青少年價值觀的影響研究
- 中國保險行業(yè)協(xié)會官方-2023年度商業(yè)健康保險經(jīng)營數(shù)據(jù)分析報告-2024年3月
- 設(shè)計質(zhì)量管理和保證措施及設(shè)計質(zhì)量管理和質(zhì)量保證措施
- 2024電力系統(tǒng)安全規(guī)定
- 小學(xué)二年級語文上冊閱讀理解專項訓(xùn)練20篇(含答案)
- 科技論文圖表等規(guī)范表達
- 高考寫作指導(dǎo)議論文標(biāo)準語段寫作課件32張
- 2021年普通高等學(xué)校招生全國英語統(tǒng)一考試模擬演練八省聯(lián)考解析
- 華能火力發(fā)電機組節(jié)能降耗技術(shù)導(dǎo)則(2023年版)
- 基礎(chǔ)知識3500個常用漢字附拼音
- 企業(yè)易制毒化學(xué)品管理培訓(xùn)
評論
0/150
提交評論