控制語句與函數(shù)_第1頁
控制語句與函數(shù)_第2頁
控制語句與函數(shù)_第3頁
控制語句與函數(shù)_第4頁
控制語句與函數(shù)_第5頁
已閱讀5頁,還剩36頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

模塊四控制語句與函數(shù)目錄標題424.函數(shù)的參數(shù)5.遞歸函數(shù)1.條件控制2.函數(shù)的定義3.函數(shù)的調(diào)用4.函數(shù)的參數(shù)5.遞歸函數(shù)1.條件控制之前編寫的程序都是順序結(jié)構(gòu)的,即依次執(zhí)行程序中的每條語句。但實際的程序并非如此簡單,經(jīng)常要用到條件判斷或反復執(zhí)行某一個程序段,這就要用到條件語句和循環(huán)語句。本小節(jié)主要介紹條件語句、循環(huán)語句及跳轉(zhuǎn)語句。3條件語句能夠改變Python程序的執(zhí)行流程,是執(zhí)行這個代碼塊還是另一個代碼塊。凡是需要判斷來確定下一步如何執(zhí)行的程序都要使用條件語句。1.條件控制41.1條件分支1.條件控制51.1

條件分支if/else語句(1)單分支格式:if(表達式):

語句序列功能:如果條件表達式的值為真,則執(zhí)行后面的語句序列。1.條件控制61.1條件分支(2)雙分支格式:if(表達式):

語句序列1else:

語句序列2功能:如果“條件表達式”的判斷結(jié)果為真,則執(zhí)行語句序列1;否則,執(zhí)行語句序列2。

1.條件控制7例4-1判斷用戶的輸入,如果輸入的數(shù)值大于0,則在屏幕上顯示“正數(shù)”;否則在屏幕上顯示“不是正數(shù)”。a=input(”a:”)a=int(a)if(a>0): print(a,”是正數(shù)?!?else: print(a,”不是正數(shù)?!?執(zhí)行結(jié)果:a:55是正數(shù)。>>>=======>>>a:-9-9不是正數(shù)。1.條件控制81.2

if…elif…else語句if/elif語句是if語句的擴展版本,它包含多個條件,用于作出復雜的決策。

所以elif的完整形式如下。if<條件判斷1>: <執(zhí)行1>elif<條件判斷2>: <執(zhí)行2>else: <執(zhí)行3>1.條件控制9例4-2:假設(shè)0-6歲是kid,6-18歲的是teenager,18歲以上是adult,判斷20歲的人屬于哪一類?age=20ifage>=6: print('teenager')elifage>=18: print('adult')else: print('kid')

輸出結(jié)果:

teenager1.條件控制101.3

while循環(huán)語句格式:while條件表達式:

語句序列功能:當條件表達式為真時,依次執(zhí)行while中的語句,直到循環(huán)表達式的值為假。1.條件控制11例4-3:求1+2+3+…+100i=1sum=0whilei<=100 sum+=i i=i+1print('sum=',sum)執(zhí)行結(jié)果:sum=50501.條件控制121.4

for循環(huán)語句格式:for變量in集合:…功能:每次從集合中取出一個值,并把值賦給變量。集合可以是元組、列表、字典等數(shù)據(jù)結(jié)構(gòu)。說明:for循環(huán)通常與range()函數(shù)一起使用,range()函數(shù)返回一個列表,for循環(huán)遍歷列表中的元素。Range()函數(shù)格式:range(start,stop[,step]),參數(shù)start表示列表開始值,默認為0;參數(shù)stop表示列表結(jié)束值,不能缺省,循環(huán)到stop-1停止;參數(shù)step表示步長,默認值為1。1.條件控制13例4-4:求1+2+3+…+100#simplefor#findthesumofthenumbersfrom1to100

theSum=0

fornumberinrange(1,101):theSum=theSum+number

print('Sumis:',theSum)執(zhí)行結(jié)果:Sumis:50501.條件控制141.5

for循環(huán)和while循環(huán)比較一般來說,固定次數(shù)的循環(huán)問題使用for循環(huán)和while循環(huán)都可以解決,而循環(huán)次數(shù)不固定的循環(huán)問題只能使用while循環(huán)解決。1.條件控制151.6跳轉(zhuǎn)語句與C、C++類似,在Python中除了提供順序執(zhí)行和選擇控制、循環(huán)控制語句外,還提供了一類跳轉(zhuǎn)語句。這類語句的總體功能是中斷當前某段程序的執(zhí)行,并跳轉(zhuǎn)到程序的其他位置繼續(xù)執(zhí)行。Python的跳轉(zhuǎn)語句有:break語句和continue語句。1.條件控制16跳轉(zhuǎn)語句的作用及區(qū)別:break語句的作用是:結(jié)束當前正在執(zhí)行的循(for、while),轉(zhuǎn)而執(zhí)行這些結(jié)構(gòu)后面的語句。continue語句的作用是:結(jié)束當前正在執(zhí)行的這一次循環(huán)(for、while),接著執(zhí)行下一次循環(huán)。即跳過循環(huán)體中尚未執(zhí)行的語句,接著進行下一次是否執(zhí)行循環(huán)的判定。continue語句和break語句的區(qū)別是:continue語句只結(jié)束本次循環(huán),而不是終止整個循環(huán)的執(zhí)行。而break語句則是結(jié)束整個循環(huán),不再進行條件判斷。目錄172.函數(shù)的定義3.函數(shù)的調(diào)用4.函數(shù)的參數(shù)5.遞歸函數(shù)2.函數(shù)的定義18

函數(shù)語法定義函數(shù)是一個能完成特定功能的代碼塊,可在程序中重復使用,減少程序的代碼量和提高程序的執(zhí)行效率。在Python中函數(shù)定義語法如下:deffunction_name(arg1,arg2[,...]):

statement[returnvalue]函數(shù)參數(shù)和返回值不是必須的,如果沒有return語句,則Python函數(shù)默認返回值為None。19目錄1.條件控制2.函數(shù)的定義3.函數(shù)的調(diào)用4.函數(shù)的參數(shù)5.遞歸函數(shù)203.函數(shù)的調(diào)用函數(shù)調(diào)用定義函數(shù)調(diào)用的語法:

函數(shù)名([實參列表])

我們在調(diào)用函數(shù)之前,必須先創(chuàng)建它。你可以使用def關(guān)鍵字進行函數(shù)的定義,可以通過在交互模式下輸入,也可以通過在一個模塊文件中編寫好該函數(shù),然后導入需要使用該函數(shù)的文件。在Python中內(nèi)置了很多有用的函數(shù),這些函數(shù)我們可以直接調(diào)用。213.函數(shù)的調(diào)用例4-5:求任意兩數(shù)的乘積deftest_func(a,b): return(a*b)>>>test_func(25,25)625>>>test_func(11,12)13222目錄1.條件控制2.函數(shù)的定義3.函數(shù)的調(diào)用4.函數(shù)的參數(shù)5.遞歸函數(shù)234.函數(shù)的參數(shù)4.1位置參數(shù)defpower(x):returnx*x對于power(x)函數(shù)來說,參數(shù)x就是一個位置參數(shù)。當我們調(diào)用power函數(shù)的時候,必須傳入且僅有的一個參數(shù)xdefpower(x,n): s=1 whilen>0: n=n-1 s=s*x returns修改后的power(x,n)函數(shù)有兩個參數(shù):x和n,這兩個參數(shù)都是位置參數(shù),調(diào)用函數(shù)時,傳入的兩個值按照位置順序依次賦給參數(shù)x和n。244.函數(shù)的參數(shù)4.2默認參數(shù)函數(shù)定義時最前面是位置參數(shù),然后是默認值參數(shù)即默認值參數(shù)右邊不能再有位置參數(shù)。defpower(x,n=2): s=1 whilen>0: n=n-1 s=s*x returnsn為默認參數(shù),默認值為2254.3關(guān)鍵字參數(shù)

在Python函數(shù)中,還可以定義可變參數(shù)。顧名思義,可變參數(shù)就是傳入的參數(shù)個數(shù)是可變的,可以是1個、2個或者任意多個,也可以是0個。defcalc(number): sum=0 forninnumber: sum=sum+n*n returnsum>>>calc(1,2,3)14>>>calc(1,3,5,7)84264.函數(shù)的參數(shù)4.3關(guān)鍵字參數(shù)

在Python函數(shù)中,還可以定義可變參數(shù)。顧名思義,可變參數(shù)就是傳入的參數(shù)個數(shù)是可變的,可以是1個、2個或者任意多個,也可以是0個。defcalc(number): sum=0 forninnumber: sum=sum+n*n returnsum>>>calc(1,2,3)14>>>calc(1,3,5,7)84274.函數(shù)的參數(shù)4.3關(guān)鍵字參數(shù)

在Python函數(shù)中,還可以定義可變參數(shù)。顧名思義,可變參數(shù)就是傳入的參數(shù)個數(shù)是可變的,可以是1個、2個或者任意多個,也可以是0個。defcalc(number): sum=0 forninnumber: sum=sum+n*n returnsum>>>calc(1,2,3)14>>>calc(1,3,5,7)84284.4關(guān)鍵字參數(shù)可變參數(shù)允許你傳入0個或任意個參數(shù),這些可變參數(shù)在函數(shù)調(diào)用時自動組裝為一個元組。而關(guān)鍵字參數(shù)允許你傳入0個或任意個含參數(shù)名的參數(shù),這些關(guān)鍵字參數(shù)在函數(shù)內(nèi)部自動組裝為一個字典。defperson(name,age,**kw): print('name:',name,'age:',age,'other:',kw)>>>person('Michael',30)name:Michaelage:30other:{}關(guān)鍵字參數(shù)kw,在調(diào)用該函數(shù)的時候可以只傳必選參數(shù)4.函數(shù)的參數(shù)294.函數(shù)的參數(shù)也可以傳入任意個數(shù)的關(guān)鍵字參數(shù)。

>>>person('Bob',35,city='Chongqing')name:Bobage:35other:{'city':'Chongqing'}>>>person('Adam',45,gender='M',job='Engineer')name:Adamage:45other:{'gender':'M','job':'Engineer'}defperson(name,age,**kw): print('name:',name,'age:',age,'other:',kw)作用:它可以擴展函數(shù)的功能。比如,在person函數(shù)里,我們保證能接收到name和age這兩個參數(shù),但是,如果調(diào)用者愿意提供更多的參數(shù),我們也能收到。試想你正在做一個用戶注冊的功能,除了用戶名和年齡是必填項外,其他都是可選項,利用關(guān)鍵字參數(shù)來定義這個函數(shù)就能滿足注冊的需求。304.5命名關(guān)鍵字參數(shù)

和關(guān)鍵字參數(shù)**kw不同,命名關(guān)鍵字參數(shù)需要一個特殊分隔符,后面的參數(shù)被視為命名關(guān)鍵字參數(shù)。

如果要限制關(guān)鍵字參數(shù)的名字,就可以用命名關(guān)鍵字參數(shù),例如,只接收city和job作為關(guān)鍵字參數(shù)。這種方式定義的函數(shù)如下:defperson(name,age,*,city,job): print(name,age,city,job)>>>person('Jack',24,city='Chongqing',job='Engineer’)

Jack24ChongqingEngineer4.函數(shù)的參數(shù)311.條件控制2.函數(shù)的定義3.函數(shù)的調(diào)用4.函數(shù)的參數(shù)5.遞歸函數(shù)目錄325.遞歸函數(shù)

函數(shù)可以調(diào)用其他函數(shù),令人驚訝的是函數(shù)還可以調(diào)用自身,下面將對此進行介紹。遞歸這個詞對于沒有接觸過程序設(shè)計的人來說可能會比較陌生。簡單說來就是引用(或者調(diào)用)自身的意思。一個類似遞歸的定義如下。

defrecursion(): returnrecursion() 理論上講此遞歸會永遠運行下去。然而每次調(diào)用函數(shù)都會用掉一點內(nèi)存,在足夠多次數(shù)的函數(shù)調(diào)用發(fā)生后(在之前的調(diào)用返回后),空間就不夠了,程序會以一個“超過最大遞歸深度”的錯誤信息結(jié)束。335.1遞歸求和

對一個數(shù)字列表(或者其他序列)求和,我們可以使用內(nèi)置的sum函數(shù),或者自己編寫一個更加定制化的版本。這里是用遞歸編寫的一個定制求和函數(shù)的示例。>>>defmysum(L): ifnotL: return0 else: returnL[0]+mysum(L[1:])>>>mysum([1,2,3,4,5])155.遞歸函數(shù)342023/5/175.遞歸函數(shù)在每一層,這個函數(shù)都是遞歸地調(diào)用自己來計算列表剩余的值的和,這個和隨后加到前面的一項中。當列表變?yōu)榭盏臅r候,遞歸循環(huán)結(jié)束并返回0。當像這樣使用遞歸的時候,對函數(shù)調(diào)用的每一個打開的層級,在運行調(diào)用堆棧上都有自己的一個函數(shù)本地作用域的副本,也就是說,這意味著L在每個層級都是不同的。如果這很難理解,可以嘗試給函數(shù)添加一個L的打印并在此運行它,從而在每個調(diào)用層級記錄下當前的列表。>>>defmysum(L): print(L) ifnotL return0 else: returnL[0]+mysum(L[1:])運行結(jié)果:5.1遞歸求和355.遞歸函數(shù)5.2遞歸求階乘計算數(shù)n的階乘。n的階乘定義為n×(n

–1)×(n

–2)×…×1。1、一般循環(huán)deffactorial(n): result=n foriinrange(1,n): result*=i returnresult這個方法可行而且很容易實現(xiàn)。它的過程主要是:首先,將result賦到n上,然后result依次與1~n-1的數(shù)相乘,最后返回結(jié)果。365.遞歸函數(shù)計算數(shù)n的階乘。n的階乘定義為n×(n

–1)×(n

–2)×…×1。2、遞歸求解deffactorial(n): ifn==1: return1 else: returnn*factorial(n-1)這就是定義的直接實現(xiàn)。只要記住函數(shù)調(diào)用factorial(n)是和調(diào)用factorial(n-1)不同的實體就行。5.2遞歸求階乘375.3二元查找假設(shè)提問者可能在想一個1~100的數(shù)字,提問者需要猜中它。當然,提問者可以耐心地猜上100次,但是真正需要猜多少次呢?答案就是只需要問7次即可。第一個問題類似于“數(shù)字是否大于50?”,如果被提問者回答說數(shù)字大于50,那么就問“是否大于75”,然后繼續(xù)將滿足條件的值等分(排除不滿足條件的值),直到找到正確答案。這個不需要太多考慮就能解答出來。這個就是所謂的二元查找。5.遞歸函數(shù)385.3二元查找假設(shè)提問者可能在想一個1~100的數(shù)字,提問者需要猜中它。當然,提問者可以耐心地猜上100次,但

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論