




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第4章
程序的控制結(jié)構(gòu)程序的循環(huán)結(jié)構(gòu)根據(jù)循環(huán)執(zhí)行次數(shù)的確定性,分為確定次數(shù)循環(huán)和非確定次數(shù)循環(huán)確定次數(shù)循環(huán)指循環(huán)體對(duì)循環(huán)次數(shù)有明確的定義,這類循環(huán)在Python中被稱為“遍歷循環(huán)”,其中,循環(huán)次數(shù)采用遍歷結(jié)構(gòu)中元素個(gè)數(shù)來(lái)體現(xiàn),具體采用for語(yǔ)句實(shí)現(xiàn)。非確定次數(shù)循環(huán)指程序不確定循環(huán)體可能的執(zhí)行次數(shù),而通過(guò)條件判斷是否繼續(xù)執(zhí)行循環(huán)體,Python提供了根據(jù)判斷條件執(zhí)行程序的無(wú)限循環(huán),具體采用while語(yǔ)句實(shí)現(xiàn)。程序的循環(huán)結(jié)構(gòu)Python通過(guò)保留字for實(shí)現(xiàn)“遍歷循環(huán)”,基本使用方法如下:for<循環(huán)變量>in<遍歷結(jié)構(gòu)>:<語(yǔ)句塊>之所以稱為“遍歷循環(huán)”,是因?yàn)閒or語(yǔ)句的循環(huán)執(zhí)行次數(shù)是根據(jù)遍歷結(jié)構(gòu)中元素個(gè)數(shù)確定的。遍歷循環(huán)可以理解為從遍歷結(jié)構(gòu)中逐一提取元素,放在循環(huán)變量中,對(duì)于每個(gè)所提取的元素執(zhí)行一次語(yǔ)句塊。遍歷循環(huán):for語(yǔ)句遍歷結(jié)構(gòu)可以是字符串、文件、組合數(shù)據(jù)類型或range()函數(shù),常用的使用方式如下遍歷循環(huán):for語(yǔ)句遍歷循環(huán)還有一種擴(kuò)展模式,使用方法如下:for<循環(huán)變量>in<遍歷結(jié)構(gòu)>:<語(yǔ)句塊1>else:<語(yǔ)句塊2>遍歷循環(huán):for語(yǔ)句在這種擴(kuò)展模式中,當(dāng)for循環(huán)正常執(zhí)行之后,程序會(huì)繼續(xù)執(zhí)行else語(yǔ)句中內(nèi)容。else語(yǔ)句只在循環(huán)正常執(zhí)行之后才執(zhí)行,因此,可以在<語(yǔ)句塊2>中放置判斷循環(huán)執(zhí)行情況的語(yǔ)句。這里先給一個(gè)小例子:遍歷循環(huán):for語(yǔ)句很多應(yīng)用很難在執(zhí)行之初就有確定的遍歷結(jié)構(gòu),這需要編程語(yǔ)言提供根據(jù)條件進(jìn)行循環(huán)的語(yǔ)法,稱為無(wú)限循環(huán),又稱條件循環(huán)。無(wú)限循環(huán)一直保持循環(huán)操作直到特定條件被滿足才結(jié)束,不需要提前知道循環(huán)次數(shù)。無(wú)限循環(huán):while語(yǔ)句Python通過(guò)保留字while實(shí)現(xiàn)無(wú)限循環(huán),基本使用方法如下:while<條件>:<語(yǔ)句塊>其中<條件>與if語(yǔ)句中的判斷條件一樣,結(jié)果為True和False。無(wú)限循環(huán):while語(yǔ)句在這種擴(kuò)展模式中,當(dāng)while循環(huán)正常執(zhí)行之后,程序會(huì)繼續(xù)執(zhí)行else語(yǔ)句中內(nèi)容。else語(yǔ)句只在循環(huán)正常執(zhí)行之后才執(zhí)行,因此,可以在<語(yǔ)句塊2>中放置判斷循環(huán)執(zhí)行情況的語(yǔ)句,例如:無(wú)限循環(huán):while語(yǔ)句程序序執(zhí)執(zhí)行行后后的的效效果果如如下下::如果果通通過(guò)過(guò)while實(shí)現(xiàn)現(xiàn)一一個(gè)個(gè)計(jì)計(jì)數(shù)數(shù)循循環(huán)環(huán),,需需要要在在循循環(huán)環(huán)之之前前對(duì)對(duì)計(jì)計(jì)數(shù)數(shù)器器idx進(jìn)行行初初始始化化,,并并在在每每次次循循環(huán)環(huán)中中對(duì)對(duì)計(jì)計(jì)數(shù)數(shù)器器idx進(jìn)行行累累加加,,如如上上述述代代碼碼第第4行。。相相比比f(wàn)or循環(huán)環(huán),,循循環(huán)環(huán)變變量量逐逐一一取取自自遍遍歷歷結(jié)結(jié)構(gòu)構(gòu),,不不需需要要程程序序維維護(hù)護(hù)計(jì)計(jì)數(shù)數(shù)器器無(wú)限限循循環(huán)環(huán):while語(yǔ)句句循環(huán)環(huán)結(jié)結(jié)構(gòu)構(gòu)有有兩兩個(gè)個(gè)輔輔助助保保留留字字::break和continue,它它們們用用來(lái)來(lái)輔輔助助控控制制循循環(huán)環(huán)執(zhí)執(zhí)行行。。break用來(lái)來(lái)跳跳出出最最內(nèi)內(nèi)層層for或while循環(huán)環(huán),,脫脫離離該該循循環(huán)環(huán)后后續(xù)續(xù)執(zhí)執(zhí)行行,,例例如如循環(huán)環(huán)保保留留字字:break和continue其中中,,break語(yǔ)句句跳跳出出了了最最內(nèi)內(nèi)層層for循環(huán)環(huán),,但但仍仍然然繼繼續(xù)續(xù)執(zhí)執(zhí)行行外外層層循循環(huán)環(huán)。。每每個(gè)個(gè)break語(yǔ)句句只只有有能能力力跳跳出出當(dāng)當(dāng)前前層層次次循循環(huán)環(huán)。。continue用來(lái)來(lái)結(jié)結(jié)束束當(dāng)當(dāng)前前當(dāng)當(dāng)次次循循環(huán)環(huán),,即即跳跳出出循循環(huán)環(huán)體體中中下下面面尚尚未未執(zhí)執(zhí)行行的的語(yǔ)語(yǔ)句句,,但但不不跳跳出出當(dāng)當(dāng)前前循循環(huán)環(huán)。。對(duì)對(duì)于于while循環(huán)環(huán),,繼繼續(xù)續(xù)求求解解循循環(huán)環(huán)條條件件。。而而對(duì)對(duì)于于for循環(huán)環(huán),,程程序序流流程程接接著著遍遍歷歷循循環(huán)環(huán)列列表表。。循環(huán)環(huán)保保留留字字:break和continue對(duì)比比continue和break語(yǔ)句句,,如如下下::循環(huán)環(huán)保保留留字字:break和continue兩個(gè)個(gè)程程序序執(zhí)執(zhí)行行后后的的效效果果分分別別為為>>>>>>PYHONPYrandom庫(kù)的的使使用用隨機(jī)機(jī)數(shù)數(shù)在在計(jì)計(jì)算算機(jī)機(jī)應(yīng)應(yīng)用用中中十十分分常常見(jiàn)見(jiàn)Python內(nèi)置置的的random庫(kù)主主要要用用于于產(chǎn)產(chǎn)生生各各種種分分布布的的偽偽隨隨機(jī)機(jī)數(shù)數(shù)序序列列random庫(kù)采采用用梅梅森森旋旋轉(zhuǎn)轉(zhuǎn)算算法法((Mersennetwister)生生成成偽偽隨隨機(jī)機(jī)數(shù)數(shù)序序列列,,可可用用于于除除隨隨機(jī)機(jī)性性要要求求更更高高的的加加解解密密算算法法外外的的大大多多數(shù)數(shù)工工程程應(yīng)應(yīng)用用。。random庫(kù)概概述述使用用random庫(kù)主主要要目目的的是是生生成成隨隨機(jī)機(jī)數(shù)數(shù),,因因此此,,讀讀者者只只需需要要查查閱閱該該庫(kù)庫(kù)的的隨隨機(jī)機(jī)數(shù)數(shù)生生成成函函數(shù)數(shù),,找找到到符符合合使使用用場(chǎng)場(chǎng)景景的的函函數(shù)數(shù)使使用用即即可可。。這這個(gè)個(gè)庫(kù)庫(kù)提提供供了了不不同同類類型型的的隨隨機(jī)機(jī)數(shù)數(shù)函函數(shù)數(shù),,所所有有函函數(shù)數(shù)都都是是基基于于最最基基本本的的random.random()函數(shù)數(shù)擴(kuò)擴(kuò)展展而而來(lái)來(lái)。。random庫(kù)概概述述random庫(kù)解解析析random庫(kù)常常用用的的9個(gè)隨隨機(jī)機(jī)數(shù)數(shù)生生成成函函數(shù)數(shù)對(duì)random庫(kù)的引用用方法與與math庫(kù)一樣,,可采用用下面兩兩種方式式實(shí)現(xiàn)importrandom或fromrandomimport*使用random庫(kù)的一些些例子如如下,請(qǐng)請(qǐng)讀者注注意,這這些語(yǔ)句句每次執(zhí)執(zhí)行后的的結(jié)果不不一定一一樣:random庫(kù)解析random庫(kù)解析生成隨機(jī)機(jī)數(shù)之前前可以通通過(guò)seed()函數(shù)指定定隨機(jī)數(shù)數(shù)種子,,隨機(jī)種種子一般般是一個(gè)個(gè)整數(shù),,只要種種子相同同,每次次生成的的隨機(jī)數(shù)數(shù)序列也也相同。。這種情情況便于于測(cè)試和和同步數(shù)數(shù)據(jù),例例如:random庫(kù)解析π的計(jì)算π的計(jì)算隨著計(jì)算算機(jī)的出出現(xiàn),數(shù)數(shù)學(xué)家找找到了另另類求解解π的方法::蒙特卡卡羅(MonteCarlo)方法,,又稱隨隨機(jī)抽樣樣或統(tǒng)計(jì)計(jì)試驗(yàn)方方法。當(dāng)所要求求解的問(wèn)問(wèn)題是某某種事件件出現(xiàn)的的概率,,或者是是某個(gè)隨隨機(jī)變量量的期望望值時(shí),,它們可可以通過(guò)過(guò)某種“試驗(yàn)”的方法,,得到這這種事件件出現(xiàn)的的頻率,,或者這這個(gè)隨機(jī)機(jī)變數(shù)的的平均值值,并用用它們作作為問(wèn)題題的解。。這就是是蒙特卡卡羅方法法的基本本思想。。π的計(jì)算應(yīng)用蒙特特卡羅方方法求解解π的基本步步驟如下下:隨機(jī)機(jī)向單位位正方形形和圓結(jié)結(jié)構(gòu),如如圖4.10所示,拋拋灑大量量“飛鏢”點(diǎn),計(jì)算算每個(gè)點(diǎn)點(diǎn)到圓心心的距離離從而判判斷該點(diǎn)點(diǎn)在圓內(nèi)內(nèi)或者圓圓外,用用圓內(nèi)的的點(diǎn)數(shù)除除以總點(diǎn)點(diǎn)數(shù)就是是π/4值π的計(jì)算為了簡(jiǎn)化化計(jì)算,,一般利利用圖形形的1/4求解π值,如圖圖4.11所示。該該問(wèn)題的的IPO表示如下下:輸入:拋拋點(diǎn)數(shù)處理:計(jì)計(jì)算每個(gè)個(gè)點(diǎn)到圓圓心的距距離,統(tǒng)統(tǒng)計(jì)在圓圓內(nèi)點(diǎn)的的數(shù)量輸出:π值π的計(jì)算π的計(jì)算上述代碼碼中,random()函數(shù)隨機(jī)機(jī)返回一一個(gè)在[0,1)之間的浮浮點(diǎn)數(shù),,用兩個(gè)個(gè)隨機(jī)數(shù)數(shù)給出隨隨機(jī)拋點(diǎn)點(diǎn)(x,y)的坐標(biāo)。。sqrt()函數(shù)來(lái)自自于數(shù)學(xué)學(xué)庫(kù)math,用來(lái)求求解輸入入數(shù)據(jù)的的平方根根。第一一次調(diào)用用clock()函數(shù)啟動(dòng)動(dòng)一個(gè)新新的計(jì)時(shí)時(shí)器,第第二次調(diào)調(diào)動(dòng)clock()函數(shù)返回回啟動(dòng)計(jì)計(jì)時(shí)器后后的時(shí)間間。π的計(jì)算代碼中DARTS是一個(gè)常常量,初初始設(shè)定定這個(gè)拋拋點(diǎn)數(shù)為為1000。該程序序運(yùn)行結(jié)結(jié)果如下下:>>>Pi值是3.144.運(yùn)行時(shí)間間是:0.016477s計(jì)算得到到的π值為3.144,與大家家熟知的的3.1415相差較遠(yuǎn)遠(yuǎn)。原因因是DARTS點(diǎn)數(shù)量較較少,無(wú)無(wú)法更精精確刻畫(huà)畫(huà)面積的的比例關(guān)關(guān)系。π的計(jì)算表4.4列出了不不同DARTS值情況下下該程序序的運(yùn)行行情況,可以看到到,隨著著DARTS數(shù)量的增增加,在在220數(shù)量級(jí)上上,π的值就相相對(duì)準(zhǔn)確確了。π的計(jì)算異常處理理機(jī)制觀察下面面這段小小程序num=eval(input("請(qǐng)輸入一一個(gè)整數(shù)數(shù):"))print(num**2)當(dāng)用戶輸輸入數(shù)字字時(shí),程程序正常常執(zhí)行,,如果用用戶輸入入的不是是數(shù)字呢呢?異常處理理:try-except語(yǔ)句異常處理理:try-except語(yǔ)句可以看到到,Python解釋器返返回了異異常信息息,同時(shí)時(shí)程序退退出,圖圖4.12具體說(shuō)明明了這個(gè)個(gè)異常信信息中各各部分的的含義。。異常處理理:try-except語(yǔ)句Python異常信息息中最重重要的部部分是異異常類型型,它表表明了發(fā)發(fā)生異常常的原因因,也是是程序處處理異常常的依據(jù)據(jù)。Python使用try-except語(yǔ)句實(shí)現(xiàn)現(xiàn)異常處處理,基基本的語(yǔ)語(yǔ)法格式式如下::try:<語(yǔ)句塊1>except<異常類型型>:<語(yǔ)句塊2>異常處理:try-except語(yǔ)句語(yǔ)句塊1是正常執(zhí)行行的程序內(nèi)內(nèi)容,當(dāng)發(fā)發(fā)生異常時(shí)時(shí)執(zhí)行except保留字后面面的語(yǔ)句塊塊,為這個(gè)個(gè)小例子增增加異常處處理,代碼碼如下:異常處理:try-except語(yǔ)句try-except語(yǔ)句可以支支持多個(gè)except語(yǔ)句,語(yǔ)法法格式如下下:try:<語(yǔ)句塊1>except<異常類型1>:<語(yǔ)句塊2>….except<異常類型N>:<語(yǔ)句塊N+1>except:<語(yǔ)句塊N+2>異常的高級(jí)級(jí)用法其中,第1到第N個(gè)except語(yǔ)句后面都都指定了異異常類型,,說(shuō)明這些些except所包含的語(yǔ)語(yǔ)句塊只處處理這些類類型的異常常。最后一一個(gè)except語(yǔ)句沒(méi)有指指定任何類類型,表示示它對(duì)應(yīng)的的語(yǔ)句塊可可以處理所所有其他異異常。這個(gè)個(gè)過(guò)程與if-elif-else語(yǔ)句類似,,是分支結(jié)結(jié)構(gòu)的一種種表達(dá)方式式,一段代代碼如下。。異常的高級(jí)級(jí)用法異常的高級(jí)級(jí)用法該程序?qū)⒂糜脩糨斎氲牡臄?shù)字作為為索引從字字符串a(chǎn)lp中返回一個(gè)個(gè)字符,當(dāng)當(dāng)用戶輸入入非整數(shù)字字符時(shí),exceptNameError異常被捕獲獲到,提升升用戶輸入入類型錯(cuò)誤誤,當(dāng)用戶戶輸入數(shù)字字不在1到26之間時(shí),異異常被except捕獲,程序序打印其他他錯(cuò)誤信息息,執(zhí)行過(guò)過(guò)程和結(jié)果果如下:異常的高級(jí)級(jí)用法除了try和except保留字外,,異常語(yǔ)句句還可以與與else和finally保留字配合合使用,語(yǔ)語(yǔ)法格式如如下:try:<語(yǔ)句塊1>except<異常類型1>:<語(yǔ)句塊2>else:<語(yǔ)句塊3>finally:<語(yǔ)句塊4>異常的高級(jí)級(jí)用法此處的else語(yǔ)句與for循環(huán)和while循環(huán)中的else一樣,當(dāng)try中語(yǔ)句塊1正常執(zhí)行結(jié)結(jié)束且沒(méi)有有發(fā)生異常常時(shí),else中語(yǔ)句塊3執(zhí)行,可以以看作是對(duì)對(duì)try語(yǔ)句塊正常常執(zhí)行后的的一種追加加處理。finally語(yǔ)句塊則不不同,無(wú)論論try中語(yǔ)句塊1是否發(fā)生異異常,語(yǔ)句句塊4都會(huì)執(zhí)行,,可以將程程序執(zhí)行語(yǔ)語(yǔ)句塊1的一些收尾尾工作放在在這里,例例如關(guān)閉打打開(kāi)文件等等。異常的高級(jí)級(jí)用法采用這些保保留子的異異常處理控控制流過(guò)程程如圖4.13所示異常的高級(jí)級(jí)用法采用else和finally修改代碼如如下異常的高級(jí)級(jí)用法執(zhí)行過(guò)程和和結(jié)果如下下:異常的高級(jí)級(jí)用法Python能識(shí)別很多多種異常類類型,但不不建議讀者者編寫(xiě)程序序時(shí)依賴try-except這種異常處處理機(jī)制。。try-except異常一般只只用來(lái)檢測(cè)測(cè)極少發(fā)生生的情況,,例如:用用戶輸入的的合規(guī)性或或文件打開(kāi)開(kāi)是否成功功等。對(duì)于于本節(jié)小例例子中索引引字符串超超過(guò)范圍的
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 公寓安裝櫥柜合同范本
- 勞務(wù)合同范本版一
- 出租土地建設(shè)合同范本
- 加盟合同范本找
- 勞務(wù)外包個(gè)人合同范本
- 個(gè)人購(gòu)買商鋪合同范本
- 代辦合同范本寫(xiě)
- 住宅租賃居間合同范本
- 凱迪拉克訂購(gòu)合同范本
- 2025年羧甲淀粉鈉合作協(xié)議書(shū)
- 銀行間本幣市場(chǎng)交易員資格考試真題模擬匯編(共586題)
- 苯乙酸安全技術(shù)說(shuō)明書(shū)(msds)
- 幼兒園大班《防欺凌》教案5篇,幼兒園大班防欺凌活動(dòng)教案
- 衛(wèi)生管理初中級(jí)職稱大綱
- 團(tuán)員民主評(píng)議測(cè)評(píng)表
- 《當(dāng)代網(wǎng)絡(luò)文學(xué)作品發(fā)展研究6300字(論文)》
- 孟氏骨折與蓋氏骨折講解學(xué)習(xí)
- GB/T 9386-2008計(jì)算機(jī)軟件測(cè)試文檔編制規(guī)范
- GB/T 25137-2010鈦及鈦合金鍛件
- 第2課《說(shuō)和做》課件(共30張ppt) 部編版語(yǔ)文七年級(jí)下冊(cè)
- 2022年廉政談話公司紀(jì)委書(shū)記對(duì)干部任前廉潔警示談話講話范文集團(tuán)國(guó)有企業(yè)國(guó)企新任職
評(píng)論
0/150
提交評(píng)論