《大數(shù)據(jù)分析:基于Python》 課件 第3章 流程控制_第1頁
《大數(shù)據(jù)分析:基于Python》 課件 第3章 流程控制_第2頁
《大數(shù)據(jù)分析:基于Python》 課件 第3章 流程控制_第3頁
《大數(shù)據(jù)分析:基于Python》 課件 第3章 流程控制_第4頁
《大數(shù)據(jù)分析:基于Python》 課件 第3章 流程控制_第5頁
已閱讀5頁,還剩14頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

大數(shù)據(jù)分析:基于Python

第3章流程控制余本國(guó)3.1條件語句

條件語句也稱判斷語句或分支語句,使用if、elif和else關(guān)鍵字來執(zhí)行不同的代碼塊,根據(jù)條件的真假來選擇性地執(zhí)行特定的代碼。當(dāng)條件分支為二分類時(shí)使用if/else結(jié)構(gòu),當(dāng)多于兩個(gè)分支時(shí)使用if/elif/…/else,elif按照需要使用。語法格式如下: if條件1:

條件1為真時(shí)執(zhí)行代碼塊1 elif條件2:

條件2為真時(shí)執(zhí)行代碼塊2 else:

條件1、2都不為真時(shí)執(zhí)行代碼塊3

條件語句會(huì)按照代碼塊前后順序進(jìn)行逐一判斷,當(dāng)遇到條件為真時(shí),會(huì)執(zhí)行真條件下的代碼塊。In[1]:num=int(input("請(qǐng)輸入一個(gè)數(shù)字:"))...:...:#使用if/else分支判斷數(shù)字是奇數(shù)還是偶數(shù)

...:ifnum%2==0:...:print("您輸入的是一個(gè)偶數(shù)。")...:else:...:print("您輸入的是一個(gè)奇數(shù)。")請(qǐng)輸入一個(gè)數(shù)字:7您輸入的是一個(gè)奇數(shù)。例如判斷輸入的數(shù)的奇偶性。在這個(gè)例子中,首先通過input()函數(shù)從用戶那里獲取一個(gè)數(shù)字,并將其轉(zhuǎn)換為整數(shù)。然后,使用if/else分支來檢查這個(gè)數(shù)字是否是偶數(shù)(即當(dāng)被2除時(shí)余數(shù)為0)。如果條件為真(即數(shù)字是偶數(shù)),則執(zhí)行第一個(gè)代碼塊,打印出“您輸入的是一個(gè)偶數(shù)”。如果條件為假(即數(shù)字不是偶數(shù),也就是奇數(shù)),則執(zhí)行else后面的代碼塊,打印出“您輸入的是一個(gè)奇數(shù)”。接收變量不及格及格中良優(yōu)xx<6060≤x<7070≤x<8080≤x<9090≤x再例如,現(xiàn)有學(xué)生成績(jī)按照如下給出的檔次,判斷來自接收到的成績(jī)屬于哪個(gè)檔次。In[2]:bz=['優(yōu)','良','中','及格','差']#成績(jī)層次分類...:s=int(input('請(qǐng)輸入分?jǐn)?shù):'))#接收鍵盤輸入...:...:ifs>=90:...:print(bz[0])...:elifs>=80:...:print(bz[1])...:elifs>=70:...:print(bz[2])...:elifs>=60:...:print(bz[3])...:else:...:print(bz[4])請(qǐng)輸入分?jǐn)?shù):87良輸出結(jié)果為:

條件語句也可以使用在行代碼的表達(dá)式中,稱為三元表達(dá)式。三元表達(dá)式是一種簡(jiǎn)潔的條件語句,它使用三個(gè)操作數(shù):一個(gè)條件表達(dá)式和一個(gè)結(jié)果表達(dá)式,如果條件為真,則返回結(jié)果表達(dá)式1,否則返回結(jié)果表達(dá)式2。三元表達(dá)式的語法如下:value_if_trueifconditionelsevalue_if_false

其中,condition是一個(gè)條件表達(dá)式,如果它的值為True,則返回value_if_true,否則返回value_if_false。

例如,接收一個(gè)變量x,想要檢查它是否大于10,如果是,則打印“Positive”,否則打印“Negative”,實(shí)現(xiàn)代碼如下。In[3]:x=int(input("請(qǐng)輸入整數(shù):"))...:result="Positive"ifx>0else"Negative"...:print(result)請(qǐng)輸入整數(shù):-3Negative

接收到的x值為-3小于0,所以result的值為Negative。3.2循環(huán)語句

循環(huán)語句分為for和while兩種類型,for循環(huán)用于遍歷序列(如列表、元組、字符串)或其他可迭代對(duì)象;while循環(huán)在指定的條件為真時(shí),會(huì)重復(fù)執(zhí)行代碼塊。3.2.1for循環(huán)for循環(huán)主要用于遍歷一個(gè)序列(字符串、列表、元組、字典、集合等,以及一些容器內(nèi)的元素,如range()、zip()等),將序列中的每一個(gè)元素逐個(gè)取出執(zhí)行for代碼行下的代碼塊,直到取完為止。例如,將列表中的元素逐個(gè)打印出來。In[1]:fruits=['蘋果','香蕉','橙子','葡萄']...:foriinfruits:...:print(i)蘋果香蕉橙子葡萄

為了節(jié)省空間,可以將打印結(jié)果顯示在一行,使用分號(hào)進(jìn)行分割,可以使用print()函數(shù)的end參數(shù)。In[2]:fruits=['蘋果','香蕉','橙子','葡萄']...:...:foriinfruits:...:print(i,end=";")蘋果;香蕉;橙子;葡萄;再如使用for循環(huán)計(jì)算列表中所有數(shù)字的和。In[3]:numbers=[1,2,3,4,5]...:sum=0...:foriinnumbers:...:sum+=i#等價(jià)于sum=sum+i...:...:print("列表中所有數(shù)字的和是:",sum)列表中所有數(shù)字的和是:15在這個(gè)例子中,首先創(chuàng)建了一個(gè)包含五個(gè)數(shù)字的列表。然后使用一個(gè)變量sum來存儲(chǔ)列表中所有數(shù)字的和,然后使用for循環(huán)遍歷這個(gè)列表,每次迭代中,變量i會(huì)被賦予列表中的下一個(gè)元素,然后我們將這個(gè)元素加到sum中。最后,我們打印出sum的值,即列表中所有數(shù)字的和。for還可以創(chuàng)建列表、元組或者字典。如將上面的列表numbers中所有奇數(shù)做成一個(gè)新的列表。In[4]:numbers=[1,2,3,4,5]

In[5]:[iforiinnumbersifi%2!=0]Out[5]:[1,3,5]

在上面的[iforiinnumbersifi%2!=0]代碼中,首先創(chuàng)建一個(gè)列表,故外面使用[],內(nèi)部產(chǎn)生的元素用i表示(即第一個(gè)i),i來自于numbers(即foriinnumbers),當(dāng)滿足被2除余數(shù)不等于0時(shí)(即ifi%2!=0),這樣的i才被留在該列表中。3.2.2while循環(huán)while循環(huán)主要用于條件為真時(shí),會(huì)重復(fù)執(zhí)行其下的代碼塊,直到給定的條件不再滿足。while循環(huán)的基本語法如下:whilecondition:block

這里的condition是一個(gè)表達(dá)式,當(dāng)它的結(jié)果為True時(shí),會(huì)執(zhí)行其下的block代碼塊,一旦condition變?yōu)镕alse,循環(huán)就會(huì)停止。例如,使用while循環(huán)計(jì)算5!的值,并返回結(jié)果。In[1]:result=1...:i=1...:whilei<=5:...:result*=i...:i+=1...:print(result)120

在循環(huán)中,使用result變量來保存階乘的結(jié)果,并給出初始值1,再使用i變量來迭代從1到5。每次迭代將i乘以result來計(jì)算階乘的值,并將i增加1。最后,返回輸出階乘值。

注意,在編寫while循環(huán)時(shí),必須確保循環(huán)內(nèi)的代碼能夠改變條件表達(dá)式的值,也稱條件控制,否則可能導(dǎo)致無限循環(huán)。在無限循環(huán)中,程序會(huì)一直執(zhí)行下去,直到手動(dòng)停止。這通常不是我們想要的結(jié)果,所以在編寫while循環(huán)時(shí)要特別注意條件控制。In[2]:n=0#方法1...:whilen<5:...:n_squared=n**2...:print(n_squared,end=";")...:n+=10;1;4;9;16;

In[3]:n=0#方法1...:while(n_squared:=n**2)<25:#海象表示法...:print(n_squared,end=";")...:n+=10;1;4;9;16;下面是兩種輸出小于5的自然數(shù)的平方的方法。海象表達(dá)式使用冒號(hào)和等于號(hào)組合(:=)來表示,即使用一個(gè)變量名后跟一個(gè)冒號(hào)和等于號(hào),表示將一個(gè)表達(dá)式的值賦給這個(gè)變量。使用海象表達(dá)式可以簡(jiǎn)化代碼,使代碼更加簡(jiǎn)潔。在代碼行“while(n_squared:=n**2)<25”中,海象表達(dá)式將n**2賦值給變量n_squared,節(jié)省了計(jì)算量,使代碼變得更簡(jiǎn)潔。需要注意的是,海象表達(dá)式只能在Python3.8及以上版本中使用,如果使用較早的版本,則會(huì)出現(xiàn)語法錯(cuò)誤。此外,雖然海象表達(dá)式可以簡(jiǎn)化代碼,但也可能會(huì)降低代碼的可讀性。請(qǐng)?jiān)囘\(yùn)行下面的代碼,觀察輸出的結(jié)果。In[4]:rows=int(input("Enternumberofrows:"))...:k=0...:foriinrange(1,rows+1):#i控制行...:forspaceinrange(1,(rows-i)+1):#控制每行開始的空格數(shù)...:print(end="")#打印每行的*前的空格...:whilek!=(2*i-1):#控制*輸出...:print("*",end="")#同行無分隔符輸出*...:k+=1#輸出*的個(gè)數(shù)...:k=0#下一行k從0開始...:print()#換行Enternumberofrows:5*************************3.3break與continue在Python中,break和continue都是控制循環(huán)流程的關(guān)鍵字。它們的作用如下:break在循環(huán)中,一旦遇到break,無論循環(huán)條件是否繼續(xù)為真,都會(huì)立即停止當(dāng)前循環(huán)。例如,在一個(gè)for或while循環(huán)中,如果你在某個(gè)條件下調(diào)用break,那么循環(huán)將立即結(jié)束,程序流程將繼續(xù)在循環(huán)之后的下一行代碼。In[5]:foriin[0,1,2,3,4,5,6,7,8,9]:...:ifi==5:...:break...:print(i)01234

在這個(gè)例子中,當(dāng)i等于5時(shí),break語句將被執(zhí)行,for循環(huán)將立即停止,盡管列表中有0到9的數(shù)字。因此,這段代碼只會(huì)打印出0到4,然后終止整個(gè)循環(huán)。continue是一個(gè)控制流語句,用于跳過當(dāng)前循環(huán)中的剩余語句,并立即開始下一輪循環(huán)。這意味著,如果continue語句在一個(gè)循環(huán)內(nèi)部(例如for或while循環(huán)),那么該循環(huán)的剩余部分將不會(huì)被執(zhí)行,而是立即開始下一輪循環(huán)。In[6]:foriin[0,1,2,3,4,5,6,7,8,9]:...:ifi==5:...:continue...:print(i)012346789

在這個(gè)例子中,當(dāng)i等于5時(shí),continue語句將被執(zhí)行,這會(huì)跳過輸出語句,并立即開始下一輪循環(huán)。因此,這段代碼會(huì)輸出出0到9,但是跳過5。3.4異常處理異常處理是一種處理程序中特殊情況(即異常)的機(jī)制。在編程中,異常是程序運(yùn)行時(shí)發(fā)生的問題,例如運(yùn)算中出現(xiàn)除數(shù)是零,訪問無效的內(nèi)存區(qū)域等。異常處理可以幫助我們?cè)谶@些問題發(fā)生時(shí)管理程序,不讓程序崩潰。在Python中,異常處理通常使用try,except,else,finally等關(guān)鍵字,其格式如下。try:block1except:block2else:block3finally:block4try下的block1代碼塊是需要測(cè)試的代碼(即有可能會(huì)出現(xiàn)異常情況),在執(zhí)行程序時(shí),首先執(zhí)行block1,此時(shí)block1可能會(huì)發(fā)生意外錯(cuò)誤,當(dāng)block1發(fā)生錯(cuò)誤時(shí),程序?qū)⑦M(jìn)入except下的block2;若不發(fā)生錯(cuò)誤,則進(jìn)入else下的block3。except和else的順序不能顛倒,except必須在else之前,else也可以省略。finally代碼行表示無論block1是否發(fā)生異常,都要執(zhí)行block4。finally必須出現(xiàn)在except和else之后,也可以省略沒有。In[1]:try:...:x=int(input("x="))...:y=int(input('y='))...:r=x/y...:print(r)...:except:#出現(xiàn)異常時(shí)執(zhí)行...:print("以上代碼執(zhí)行時(shí)出現(xiàn)了異常。")...:else:...:print("沒有出現(xiàn)異常!")x=3y=0以上代碼執(zhí)行時(shí)出現(xiàn)了異常。

有時(shí)需要將捕獲到錯(cuò)誤信息打印出來,此時(shí)可以用Exception來接收捕獲到的異常信息。下面的例子是接收來自鍵盤輸入的兩個(gè)數(shù),用這兩個(gè)數(shù)做除法,可能會(huì)出現(xiàn)除數(shù)為0的情況,我們將這個(gè)異常捕獲到,并輸出這個(gè)異常信息。In[2]:try:...:x=int(input("x="))...:y=int(input('y='))...:r=x/y...:print(r)...:except(Exception)ase:#不管什么異常,都捕獲給e...:print(e)#輸出異常信息...:print("以上是捕獲到的異常信息")...:else:...:print("沒有出現(xiàn)異常!")...:finally:...:print("程序運(yùn)行到最后了!")

x=3y=0divisionbyzero以上是捕獲到的異常信息程序運(yùn)行到最后了!在代碼中,作為除數(shù)的y被輸入了0,出現(xiàn)了0作為除數(shù)的異常情況,即異常信息為“ZeroDivisionError:divisionbyzero”。代碼行“except(Exception)ase”表示將捕獲到的異常信息(ZeroDivisionError:divisionbyzero)綁定給變量e,即被except捕獲的異常信息賦值給了e,再執(zhí)行其下的代碼塊。在上面的代碼中最后有finally語句,表示無論try下的代碼出現(xiàn)何種情況,都不會(huì)影響finally語句下代碼的運(yùn)行。當(dāng)x除以y不產(chǎn)生異常時(shí),便進(jìn)入了else并執(zhí)行其下的代碼。In[3]:try:...:x=int(input("x="))...:y=int(input('y='))...:r=x/y...:print(r)...:except(Exception)ase:...:print(e)...:print("以上是捕獲到的異常信息")...:else:...:print("沒有出現(xiàn)異常!")x=3y=21.5沒有出現(xiàn)異常!要注意的是,可以使用多個(gè)except語句塊來處理不同類型的異常,代碼如下:In[4]:try:...:#嘗試執(zhí)行的代碼

...:x=int(input("請(qǐng)輸入:"))+"0"#一定會(huì)出現(xiàn)錯(cuò)誤...:exceptValueError:...:#當(dāng)值錯(cuò)誤發(fā)生時(shí)執(zhí)行的代碼

...:print("輸入的不是有效的整數(shù)!")...:exceptTypeError:...:#當(dāng)類型錯(cuò)誤發(fā)生時(shí)執(zhí)行的代碼

...:print

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論