![Python數(shù)據(jù)分析及應(yīng)用 課件 第3章程序的控制結(jié)構(gòu)_第1頁](http://file4.renrendoc.com/view14/M0A/06/12/wKhkGWeRzeaAOTdeAAC92-en_Wg631.jpg)
![Python數(shù)據(jù)分析及應(yīng)用 課件 第3章程序的控制結(jié)構(gòu)_第2頁](http://file4.renrendoc.com/view14/M0A/06/12/wKhkGWeRzeaAOTdeAAC92-en_Wg6312.jpg)
![Python數(shù)據(jù)分析及應(yīng)用 課件 第3章程序的控制結(jié)構(gòu)_第3頁](http://file4.renrendoc.com/view14/M0A/06/12/wKhkGWeRzeaAOTdeAAC92-en_Wg6313.jpg)
![Python數(shù)據(jù)分析及應(yīng)用 課件 第3章程序的控制結(jié)構(gòu)_第4頁](http://file4.renrendoc.com/view14/M0A/06/12/wKhkGWeRzeaAOTdeAAC92-en_Wg6314.jpg)
![Python數(shù)據(jù)分析及應(yīng)用 課件 第3章程序的控制結(jié)構(gòu)_第5頁](http://file4.renrendoc.com/view14/M0A/06/12/wKhkGWeRzeaAOTdeAAC92-en_Wg6315.jpg)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
云南財經(jīng)大學(xué)信息學(xué)院Python數(shù)據(jù)分析及應(yīng)用第三章程序的控制結(jié)構(gòu)目錄
3.1程序的基本結(jié)構(gòu)3.2程序的選擇結(jié)構(gòu)3.3程序的循環(huán)結(jié)構(gòu)3.4程序的異常處理3.5Random庫的使用知識目標(biāo):掌握程序的三種基本結(jié)構(gòu):順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu),掌握單分支、二分支和多分支三種選擇結(jié)構(gòu),掌握for循環(huán)、while循環(huán)兩種循環(huán)結(jié)構(gòu)。技能目標(biāo):理解分支的概念及程序控制的關(guān)系,掌握二分支決策方法,掌握多分支決策方法,掌握for循環(huán)的使用方法,掌握while循環(huán)的使用方法。素質(zhì)目標(biāo):具備一定的決策能力和規(guī)劃能力,具備發(fā)展的眼光,培養(yǎng)全局思維,能夠合理規(guī)劃自己的職業(yè)生涯。學(xué)習(xí)目標(biāo)
稅收取之于民、用之于民,我們在履行納稅的法定義務(wù)時,也在享受稅收給整個社會帶來的積極影響。以個人所得稅為例,目前個人所得稅的起征點是5000,并且采用差額累進(jìn)制。只有收入超過5000元時我們才需要繳納個人所得稅,收入越高需要繳納的稅款越多,并且國家還考慮到撫養(yǎng)小孩和贍養(yǎng)老人的壓力,提高了個人所得稅的起征點。目前,個人工資扣稅標(biāo)準(zhǔn)規(guī)定:月薪5000元以下免稅,5000-8000元稅率為3%,8000-17000元為10%,17000-30000元為20%,30000-40000元為25%,40000-60000元為30%,60000-85000元為35%,85000元以上為45%。如何設(shè)計一個Python程序計算個人所得稅?本章導(dǎo)讀
結(jié)構(gòu)化編程鼓勵將復(fù)雜問題分解成一系列簡單、明確的步驟,使得代碼易于理解。清晰的模塊劃分和邏輯流程使得整個程序的結(jié)構(gòu)清晰,目標(biāo)明確,便于理解和維護(hù)。采用結(jié)構(gòu)化程序設(shè)計方法可以顯著提高程序的可讀性、可維護(hù)性、可靠性、效率以及適應(yīng)變化的能力。Python的程序控制結(jié)構(gòu)主要包括順序結(jié)構(gòu)、選擇結(jié)構(gòu)(分支結(jié)構(gòu))和循環(huán)結(jié)構(gòu)。這三種控制結(jié)構(gòu)也是結(jié)構(gòu)化程序設(shè)計的核心,與之相對的是面向?qū)ο蟪绦蛟O(shè)計。C語言就是結(jié)構(gòu)化語言,而C++、Java或者Python等都是面向?qū)ο蟮恼Z言。調(diào)試Python程序時,經(jīng)常會報出一些異常。一方面可能是寫程序時由于疏忽或者考慮不全造成了錯誤,這時就需要根據(jù)異常分析程序結(jié)構(gòu),改正錯誤;另一方面,有些異常是不可避免的,但我們可以對異常進(jìn)行捕獲處理,防止程序終止。本章導(dǎo)讀1.順序結(jié)構(gòu)順序結(jié)構(gòu)的執(zhí)行順序是自上而下,依次執(zhí)行。順序結(jié)構(gòu)的程序設(shè)計是最簡單的,它表示程序按照代碼的書寫順序從上到下依次執(zhí)行,只要按照解決問題的順序?qū)懗鱿鄳?yīng)的語句就行。3.1程序的基本結(jié)構(gòu)程序由語句構(gòu)成,根據(jù)項目或者算法的實際需求執(zhí)行語句,程序的具體執(zhí)行是由流程控制語句實現(xiàn)的。結(jié)構(gòu)化程序設(shè)計分三種基本結(jié)構(gòu):順序結(jié)構(gòu)、選擇結(jié)構(gòu)(分支結(jié)構(gòu))、循環(huán)結(jié)構(gòu)。采用結(jié)構(gòu)化程序設(shè)計方法,程序結(jié)構(gòu)清晰,易于閱讀、測試、排錯和修改。由于每個模塊執(zhí)行單一功能,模塊間聯(lián)系較少,使程序編制比過去更簡單,程序更可靠,而且增加了可維護(hù)性,每個模塊可以獨(dú)立編制、測試。ABC圖3-1順序結(jié)構(gòu)的流程圖2.選擇結(jié)構(gòu)選擇結(jié)構(gòu)(分支結(jié)構(gòu))是程序根據(jù)條件表達(dá)式的值來決定執(zhí)行哪一部分的代碼。顧名思義,當(dāng)程序到了一定的處理過程時,遇到了很多分支,無法按直線走下去,程序的處理步驟出現(xiàn)了分支,它需要根據(jù)某一特定的條件選擇其中的一個分支執(zhí)行,選擇結(jié)構(gòu)有單分支、二分支和多分支三種形式。3.1程序的基本結(jié)構(gòu)
圖3-2選擇結(jié)構(gòu)的流程圖AB條件a)FTA條件b)FT3.循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)用于重復(fù)執(zhí)行一段代碼,直到滿足某個條件為止。語句不斷的重復(fù),被稱作循環(huán),循環(huán)結(jié)構(gòu)通常用來表示反復(fù)執(zhí)行一個程序或某些操作的過程,直到某條件為假(或為真)時才可終止循環(huán)。在循環(huán)結(jié)構(gòu)中最主要的是:什么時候可以執(zhí)行循環(huán)?出現(xiàn)哪些操作需要循環(huán)執(zhí)行?3.1程序的基本結(jié)構(gòu)圖3-3循環(huán)結(jié)構(gòu)的流程圖分支A條件FT3.2程序的選擇結(jié)構(gòu)選擇結(jié)構(gòu)顧名思義,當(dāng)程序到了一定的處理過程時,遇到了很多分支,無法按直線走下去,程序的處理步驟出現(xiàn)了分支,它需要根據(jù)某一特定的條件選擇其中的一個分支執(zhí)行。選擇結(jié)構(gòu)有單一條件分支選擇結(jié)構(gòu)(if)、二條件分支選擇結(jié)構(gòu)(else從句)、多條件分支選擇結(jié)構(gòu)(elif子句)三種形式。在Python中,選擇結(jié)構(gòu)通常使用if、elif和else語句來實現(xiàn)。這些語句允許程序根據(jù)條件測試的結(jié)果執(zhí)行不同的代碼塊。在選擇結(jié)構(gòu)中,if語句用來檢驗一個條件,如果條件為真,我們運(yùn)行一塊語句(稱為if-塊),否則我們處理另外一塊語句(稱為else-塊),如果有多個分支選擇,再根據(jù)分支條件,選擇對應(yīng)的語句塊處理(稱為elif-塊)。else從句和elif子句是可選的。選擇結(jié)構(gòu)由三部分組成:關(guān)鍵字本身,用于判斷結(jié)果真假的條件表達(dá)式,以及當(dāng)表達(dá)式為真(True)或者非零時執(zhí)行的代碼塊。3.2程序的選擇結(jié)構(gòu)選擇結(jié)構(gòu)顧名思義,當(dāng)程序到了一定的處理過程時,遇到了很多分支,無法按直線走下去,程序的處理步驟出現(xiàn)了分支,它需要根據(jù)某一特定的條件選擇其中的一個分支執(zhí)行。選擇結(jié)構(gòu)有單一條件分支選擇結(jié)構(gòu)(if)、二條件分支選擇結(jié)構(gòu)(else從句)、多條件分支選擇結(jié)構(gòu)(elif子句)三種形式。在Python中,選擇結(jié)構(gòu)通常使用if、elif和else語句來實現(xiàn)。這些語句允許程序根據(jù)條件測試的結(jié)果執(zhí)行不同的代碼塊。在選擇結(jié)構(gòu)中,if語句用來檢驗一個條件,如果條件為真,我們運(yùn)行一塊語句(稱為if-塊),否則我們處理另外一塊語句(稱為else-塊),如果有多個分支選擇,再根據(jù)分支條件,選擇對應(yīng)的語句塊處理(稱為elif-塊)。else從句和elif子句是可選的。選擇結(jié)構(gòu)由三部分組成:關(guān)鍵字本身,用于判斷結(jié)果真假的條件表達(dá)式,以及當(dāng)表達(dá)式為真(True)或者非零時執(zhí)行的代碼塊。3.2程序的選擇結(jié)構(gòu)選擇結(jié)構(gòu)當(dāng)條件為真時,執(zhí)行相應(yīng)的代碼塊。如何判斷條件的真假?在Python中,任何非零,非空對象都是真,除真和None以外其他的都是假(False)。條件判斷使用關(guān)系運(yùn)算符和邏輯運(yùn)算符來表示。Python中的比較運(yùn)算符,如表3-1所示;Python中的邏輯運(yùn)算符,如表3-2所示。操作符描述x
==
yx等于yx!=
yx不等于yx>
yx大于yx<
yx小于yx>=
yx大于等于yx<=
yx小于等于yx
is
yx和y是同一個對象x
isnot
yx和y不是同一個對象x
in
yx是y的成員x
notin
yx不是y的成員表3-1“Python中的比較運(yùn)算符表3-1“Python中的比較運(yùn)算符運(yùn)算符邏輯表達(dá)式描述andxandy布爾"與"-如果x為False,xandy返回False,否則它返回y的計算值orxory布爾"或"-如果x是True,它返回True,否則它返回y的計算值notnotx布爾"非"-如果x為True,返回False。如果x為False,它返回True3.2.1單分支選擇結(jié)構(gòu)3.2程序的選擇結(jié)構(gòu)if語句是最基本的條件判斷結(jié)構(gòu),用于測試一個條件是否為真(True)。如果條件為真,則執(zhí)行緊跟在if后面的代碼塊。單分支選擇結(jié)構(gòu)的if語句語法格式如下:if<條件>:<語句塊1>if語句根據(jù)給出的條件,決定下一步怎么做?如果條件為真(True),就執(zhí)行語句塊1中的代碼,為假(False)就不執(zhí)行語句塊1中的代碼。無論條件為真或者為假,控制都會轉(zhuǎn)到if語句后的下一條語句。實例3-1計算個人所得稅(單分支示例),假設(shè)月薪5000元以上稅率為3%。salary=eval(input("請輸入月薪:"))tax=0ifsalary>5000:tax=salary*0.03income=salary-taxprint("月薪:{}元,本月繳稅:{}元,實際收入:{}元".format(salary,tax,income))程序運(yùn)行結(jié)果:請輸入月薪:6899月薪:6899元,本月繳稅:206.97元,實際收入:6692.03元在這個程序中,用戶輸入月薪,然后判斷月薪是否大于5000元,如果月薪大于5000元,計算所得稅為月薪的3%。在這個例子中,使用eval(input())語句函數(shù)取得用戶輸入的月薪。3.2.2二分支選擇結(jié)構(gòu)3.2程序的選擇結(jié)構(gòu)二分支選擇結(jié)構(gòu)增加了else語句,根據(jù)判斷條件結(jié)果而選擇不同向前路徑的運(yùn)行方式。if-else語句用于測試一個條件,如果該條件為真,則執(zhí)行if代碼塊;否則,執(zhí)行else代碼塊。在實例3-1計算個人所得稅(單分支示例)中,用戶輸入月薪,然后判斷月薪是否大于5000元,如果月薪大于5000元,使得if語句的條件為真,程序執(zhí)行語句塊1中的代碼,計算所得稅為月薪的3%。如果月薪小于或者等于5000元,可以用else語句增加另外的選擇。二分支選擇結(jié)構(gòu)的if-else語句語法格式如下:if<條件>:<語句塊1>else:<語句塊2>實例3-2計算個人所得稅(二分支示例),假設(shè)月薪5000元以上稅率為3%,月薪小于或者等于5000元稅率為0。salary=eval(input("請輸入月薪:"))ifsalary>5000:tax=salary*0.03else:tax=0income=salary-taxprint("月薪:{}元,本月繳稅:{}元,實際收入:{}元".format(salary,tax,income))程序運(yùn)行結(jié)果:請輸入月薪:4500月薪:4500元,本月繳稅:0元,實際收入:4500元二分支選擇結(jié)構(gòu)緊湊形式的if-else語句語法格式如下:<表達(dá)式1>if<條件>else<表達(dá)式2>實例3-3計算個人所得稅(二分支緊湊形式示例),假設(shè)月薪5000元以上稅率為3%,月薪小于或者等于5000元稅率為0。salary=eval(input("請輸入月薪:"))print("本月繳稅:",salary*0.03)if(salary>5000)elseprint("本月繳稅:",0)程序運(yùn)行結(jié)果:請輸入月薪:6899本月繳稅:206.973.2.3多分支選擇結(jié)構(gòu)二分支選擇結(jié)構(gòu)的if-else語句只有兩種選擇,如果有多個條件需要多種選擇,可以使用elif語句。elif語句(是elseif的縮寫),它檢查多個表達(dá)式是否為真,并在為真時執(zhí)行特定代碼塊中的代碼。如果所有的if和elif條件都不滿足,則執(zhí)行最后的else部分。和else一樣,elif聲明是可選的,不同的是,if語句后最多只能有一個else語句,但可以有任意數(shù)量的elif語句。3.2程序的選擇結(jié)構(gòu)多分支選擇結(jié)構(gòu)的if-elif-else語句語法格式如下:if<條件1>:<語句塊1>elif<條件2>:<語句塊2>……elif<條件N-1>:<語句塊N-1>else:<語句塊N>3.2.3多分支選擇結(jié)構(gòu)3.2程序的選擇結(jié)構(gòu)實例3-4計算個人所得稅(多分支示例)月薪5000元以下免稅,5000-8000元稅率為3%,8000-17000元為10%,17000-30000元為20%,30000-40000元為25%,40000-60000元為30%,60000-85000元為35%,85000元以上為45%。salary=eval(input("請輸入月薪:"))ifsalary<=5000:tax=0elifsalary<=8000:tax=(salary-5000)*0.03elifsalary<=17000:tax=(salary-8000)*0.1+3000*0.03elifsalary<=30000:tax=(salary-17000)*0.2+3000*0.03+9000*0.1elifsalary<=40000:tax=(salary-30000)*0.25+3000*0.03+9000*0.1+13000*0.2elifsalary<=60000:tax=(salary-40000)*0.3+3000*0.03+9000*0.1+13000*0.2+10000*0.25elifsalary<=850000:tax=(salary-60000)*0.35+3000*0.03+9000*0.1+13000*0.2+10000*0.25+20000*0.3else:tax=(salary-85000)*0.45+3000*0.03+9000*0.1+13000*0.2+10000*0.25+20000*0.3+25000*0.35income=salary-taxprint("月薪:{}元,本月繳稅:{}元,實際收入:{}元".format(salary,tax,income))程序運(yùn)行結(jié)果:請輸入月薪:4500月薪:4500元,本月繳稅:0元,實際收入:4500元3.2.3多分支選擇結(jié)構(gòu)如果將計算表達(dá)式中的數(shù)值預(yù)先計算出,實例3-4可以改寫為簡化形式。3.2程序的選擇結(jié)構(gòu)實例3-5計算個人所得稅(多分支示例)簡化形式。salary=eval(input("請輸入月薪:"))ifsalary<=5000:tax=0elifsalary<=8000:tax=salary*0.03-150elifsalary<=17000:tax=salary*0.1-710elifsalary<=30000:tax=salary*0.2-2410elifsalary<=40000:tax=salary*0.25-3910elifsalary<=60000:tax=salary*0.3-5910elifsalary<=850000:tax=salary*0.35-8910else:tax=salary*0.45-17410income=salary-taxprint("月薪:{}元,本月繳稅:{}元,實際收入:{}元".format(salary,tax,income))程序運(yùn)行結(jié)果:請輸入月薪:8000月薪:8000元,本月繳稅:90.0元,實際收入:7910.0元實例3-6判斷股票是否漲?;蛘叩?多分支示例)漲停和跌停的設(shè)定是根據(jù)股票價格波動的情況來確定的。在中國A股市場中,漲停價格和跌停價格的計算分別為:漲停價格=前一個交易日收盤價×1.1跌停價格=前一個交易日收盤價×0.93.2程序的選擇結(jié)構(gòu)如果某只股票的前一個交易日收盤價為10元,那么當(dāng)天的漲停價為11元,跌停價為9元close=eval(input("請輸入股票的前一個交易日收盤價:"))nowprice=eval(input("請輸入股票交易價格:"))top=close*1.1low=close*0.9ifnowprice<low:print(“股票交易價格{}小于跌停價{},股票不能在當(dāng)前價格交易?!?format(nowprice,low))elifnowprice==low:print(“股票交易價格{}等于跌停價{},股票交易將停盤?!?format(nowprice,low))elifnowprice==top:print(“股票交易價格{}等于漲停價{},股票交易將停盤?!?format(nowprice,top))elifnowprice>top:print(“股票交易價格{}大于漲停價{},股票不能在當(dāng)前價格交易?!?format(nowprice,top))else:print(“股票可以正常交易?!?format(nowprice,top))程序運(yùn)行結(jié)果:請輸入股票的前一個交易日收盤價:51請輸入股票交易價格:58股票交易價格58大于漲停價56.1,股票不能在當(dāng)前價格交易。3.3 程序的循環(huán)結(jié)構(gòu)程序的循環(huán)結(jié)構(gòu)是編程語言中用于執(zhí)行重復(fù)任務(wù)的一類控制結(jié)構(gòu)。循環(huán)允許一段代碼多次執(zhí)行,直到滿足某個終止條件。怎么樣才能重復(fù)多次呢?循環(huán)語句在某種條件下,循環(huán)的執(zhí)行某段代碼塊,并在符合條件的情況下跳出該段循環(huán),其目的重復(fù)的處理相同任務(wù),Python循環(huán)語句主要有for語句和while語句。循環(huán)結(jié)構(gòu)For語句While語句特殊的流程控制語句Break語句Continue語句(一)for語句基礎(chǔ)語法3.3.1for語句1.for語句語法格式一for迭代變量in遍歷序列:執(zhí)行語句......(1)執(zhí)行過程:依次將‘遍歷序列’的每一個值傳遞給‘迭代變量’,每傳遞一個值時執(zhí)行一次內(nèi)部語句,直至‘遍歷序列’的最后一個元素,for語句退出。(2)遍歷序列可以是字符串(str),列表(list),元組(tuple)…。實例3-7遍歷字符串。strs=”ThisisPython”forcinstrs:print(c,end="*")程序運(yùn)行結(jié)果:T*h*i*s**i*s**P*y*t*h*o*n*實例3-8遍歷股票過去5個交易日的收盤價列表。closing=[52.45,55.20,53.75,56.50,53.80]forpriceinclosing:print(price)程序運(yùn)行結(jié)果:52.4555.253.7556.553.8(一)for語句基礎(chǔ)語法3.3.1for語句2.for語句語法格式二for迭代變量inrange(start,end[,step]):
執(zhí)行語句......參數(shù)說明:start:初始值(默認(rèn)為‘0’)end:終止值step:步進(jìn)值(默認(rèn)為‘1’),即每次重復(fù)操作時比上一次操作所增長的數(shù)值。執(zhí)行過程:第一步:將start值傳遞給‘迭代變量’,然后執(zhí)行一次內(nèi)部語句;第二步:在start的基礎(chǔ)上+step再次傳遞給‘迭代變量’,如果‘迭代變量’的值小于‘end’的值,則再次執(zhí)行內(nèi)部語句,否則退出for循環(huán)。實例3-9輸出九九乘法表。foriinrange(1,10):forjinrange(1,i+1):print("{}*{}={:2}".format(j,i,j*i),end="")print()程序運(yùn)行結(jié)果:1*1=11*2=22*2=41*3=32*3=63*3=91*4=42*4=83*4=124*4=161*5=52*5=103*5=154*5=205*5=251*6=62*6=123*6=184*6=245*6=306*6=361*7=72*7=143*7=214*7=285*7=356*7=427*7=491*8=82*8=163*8=244*8=325*8=406*8=487*8=568*8=641*9=92*9=183*9=274*9=365*9=456*9=547*9=638*9=729*9=81(一)for語句基礎(chǔ)語法3.3.1for語句2.for語句語法格式二實例3-10輸出100以前的偶數(shù)foriinrange(0,101,2):print(i,end="")程序運(yùn)行結(jié)果:02468101214161820222426283032343638404244464850525456586062646668707274767880828486889092949698100(二)else語句在循環(huán)條件正常結(jié)束后如果要執(zhí)行某段代碼塊,則可以用else語句來操作。循環(huán)的正常結(jié)束后,就會觸發(fā)else語句。3.3.1for語句for-else語句可以總結(jié)成以下說明:如果依次做完了所有的事情(for正常結(jié)束),就去做其他事(執(zhí)行else),若做到一半就停下來不做了(中途遇到break),就不去做其他事了(不執(zhí)行else)。實例3-11for-in-else實例。foriinrange(10):print(i,end="")else:print(“循環(huán)正常結(jié)束”)程序運(yùn)行結(jié)果:0123456789循環(huán)正常結(jié)束(一)while語句語法格式3.3.2while語句while循環(huán)條件:循環(huán)操作執(zhí)行過程:判斷表達(dá)式,如果為真(True)則執(zhí)行循環(huán)操作語句,如果為假(False)則退出while語句。循環(huán)條件最終的返回值必須是False或True。實例3-12每個月向銀行存入固定金額的錢(比如1000元),年利率是固定的3%,按月復(fù)利計算。需要多少個月才能使賬戶總額達(dá)到10,000元deposit=eval(input(“請輸入每月存款額”))rate=0.03#年利率target=eval(input(“請輸入目標(biāo)總額”))total=0months=0mon_rate=rate/12whiletotal<target:total+=total*mon_rate
total+=deposit
months+=1print("需要{}個月后,賬戶總額將達(dá)到或超過{}元。".format(months,target))
程序運(yùn)行結(jié)果:請輸入每月存款額:200請輸入目標(biāo)總額:10000需要48個月后,賬戶總額將達(dá)到或超過10000元。只要在條件為真的情況下,while語句允許重復(fù)執(zhí)行一塊語句。如果條件成立(True),重復(fù)執(zhí)行相同操作,條件不符合,跳出循環(huán)。(二)循環(huán)中使用else語句語法格式3.3.2while語句while循環(huán)條件:循環(huán)操作else:
執(zhí)行操作實例3-13while-else實例x=3while(x>0):x-=1print("HelloWorld")else:print("done")程序運(yùn)行結(jié)果:HelloWorldHelloWorldHelloWorlddone(一)break語句3.3.3特殊的流程控制語句break語句用于立即終止當(dāng)前循環(huán)(最內(nèi)層的循環(huán)),跳出循環(huán)體,并繼續(xù)執(zhí)行循環(huán)之后的代碼。如果break語句出現(xiàn)在嵌套循環(huán)中,它將只終止最內(nèi)層的循環(huán)。如果從for或while循環(huán)中終止,任何對應(yīng)的循環(huán)else塊將不執(zhí)行。實例3-14break語句實例forletterin'while':ifletter=='i':breakprint('當(dāng)前字母為:',letter)程序運(yùn)行結(jié)果:當(dāng)前字母:w當(dāng)前字母:h循環(huán)除了在條件不滿足的時候結(jié)束外還可以選擇在某些條件下結(jié)束循環(huán),結(jié)束循環(huán)共有兩個命令break、continue。break語句用來終止循環(huán)語句,程序控制跳出循環(huán)執(zhí)行循環(huán)體外的下一條語句。Continue語句用來結(jié)束本次循環(huán),緊接著執(zhí)行下一次的循環(huán)(二)continue語句3.3.3特殊的流程控制語句continue語句用于跳過當(dāng)前循環(huán)的剩余部分,并立即開始下一次循環(huán)。continue之后的代碼在當(dāng)次循環(huán)中不會被執(zhí)行實例3-15continue語句實例forletterin'while':ifletter=='i':
continueprint('當(dāng)前字母:',letter)程序運(yùn)行結(jié)果:當(dāng)前字母:w當(dāng)前字母:h當(dāng)前字母:l當(dāng)前字母:e用break關(guān)鍵字終止當(dāng)前循環(huán)就不會執(zhí)行當(dāng)前的else語句,而使用continue關(guān)鍵字快速進(jìn)入下一論循環(huán),或者沒有使用其他關(guān)鍵字,循環(huán)的正常結(jié)束后,就會觸發(fā)else語句。只有循環(huán)完所有次數(shù),才會執(zhí)行else。break可以阻止else語句塊的執(zhí)行。break是用于完全終止循環(huán),而continue是用于跳過當(dāng)前迭代的剩余部分并繼續(xù)下一次迭代。正確選擇使用break或continue可以有效地控制循環(huán)流程,使程序邏輯更加靈活和高效。3.4 程序的異常處理什么是異常?異常是Python對象,表示一個錯誤。當(dāng)Python腳本發(fā)生異常時我們需要捕獲處理它,否則程序會終止執(zhí)行。在程序運(yùn)行過程中,總會遇到各種各樣的錯誤,有的錯誤是程序編寫有問題造成的。我們?nèi)绾翁幚懋惓?,使程序正常運(yùn)行?我們可以使用try…except語句來處理異常。我們把所有可能引發(fā)錯誤的語句放在try-語句塊中,然后在except語句塊中處理所有的錯誤和異常。except語句塊可以專門處理單一的錯誤或異常,或者一組包括在圓括號內(nèi)的錯誤/異常。如果沒有給出錯誤或異常的名稱,它會處理所有的錯誤和異常。對于每個try-語句塊,至少都有一個相關(guān)聯(lián)的except-語句塊。如果某個錯誤或異常沒有被處理,默認(rèn)的Python處理器就會被調(diào)用。它會終止程序的運(yùn)行,并且打印一個消息,我們已經(jīng)看到了這樣的處理。還可以讓try…except關(guān)聯(lián)上一個else從句。當(dāng)沒有異常發(fā)生的時候,else從句將被執(zhí)行。BaseException所有異常的基類,父類Exception常規(guī)錯誤的基類StandardError所有的內(nèi)建標(biāo)準(zhǔn)異常的基類,標(biāo)準(zhǔn)化錯誤ImportError導(dǎo)入模塊錯誤ArithmeticError所有數(shù)值計算錯誤的基類FloatingPointError浮點計算錯誤AssertionError斷言語句失敗AttributeError對象沒有這個屬性Warning警告的基類警告類也可以自定義異常。系統(tǒng)定義的異常:1.異常處理的基本使用3.4 程序的異常處理異常處理語句語法格式一:try:<語句塊1>except<異常類型>:<語句塊2>程序首先執(zhí)行語句塊1,如果輸入有誤,接著執(zhí)行語句塊2。如果輸入沒有錯誤,執(zhí)行try…except語句的后續(xù)語句。實例3-16異常處理示例try:num=eval(input("請輸入股票買入價格:"))print(num**2)except:print("輸入不是一個數(shù)值!")程序運(yùn)行結(jié)果:請輸入股票買入價格:wy輸入不是一個數(shù)值!2.異常處理的高級使用3.4 程序的異常處理異常處理基本語句語法格式二:try:<語句塊1>except:<語句塊2>else:<語句塊3>finally:<語句塊4>程序首先執(zhí)行語句塊1,如果輸入有誤,接著執(zhí)行語句塊2。如果輸入沒有錯誤,執(zhí)行else語句后的語句塊2,finally對應(yīng)語句塊4一定執(zhí)行,else對應(yīng)語句塊3在不發(fā)生異常時執(zhí)行。實例3-17異常處理的高級使用示例flag=Falsewhile(flag==False):try:num=evel(input("請輸入股票買入價格:"))print(num**2)except:print("輸入錯誤!請重新輸入股票價格!")else:flag=Truefinally:print("輸入的是數(shù)值!")程序運(yùn)行結(jié)果:請輸入股票買入價格:wy輸入錯誤!請重新輸入股票價格!輸入的是數(shù)值!本章總結(jié)學(xué)習(xí)目標(biāo)知識目標(biāo):掌握程序的三種基本結(jié)構(gòu)(順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)),以及單分支、二分支和多分支選擇結(jié)構(gòu),還有for循環(huán)、while循環(huán)兩種循環(huán)結(jié)構(gòu)。技能目標(biāo):理解分支概念與程序控制關(guān)系,掌握二分支和多分支決策方法,以及for循環(huán)和while循環(huán)的使用方法。素質(zhì)目標(biāo):培養(yǎng)決策、規(guī)劃能力,具備全局思維,合理規(guī)劃職業(yè)生涯。程序基本結(jié)構(gòu)順序結(jié)構(gòu):自上而下依次執(zhí)行語句,如計算商品平均價格。多數(shù)情況下作為程序一部分與其他結(jié)構(gòu)構(gòu)成復(fù)雜程序。選擇結(jié)構(gòu):根據(jù)條件表達(dá)式值決定執(zhí)行哪部分代碼,有單分支、二分支和多分支三種形式,通過if、elif和else語句實現(xiàn)。循環(huán)結(jié)構(gòu):重復(fù)執(zhí)行一段代碼直到滿足條件,主要有for語句和while語句。選擇結(jié)構(gòu)單分支選擇結(jié)構(gòu):if語句測試條件,為真執(zhí)行緊跟代碼塊,如計算月薪大于5000元的個人所得稅。二分支選擇結(jié)構(gòu):if-else語句根據(jù)條件選擇執(zhí)行代碼塊,有緊湊形式,如計算不同月薪范圍的個人所得稅。多分支選擇結(jié)構(gòu):if-elif-else語句處理多個條件選擇,如根據(jù)不同月薪范圍計算個人所得稅,還可用于判斷股票漲?;虻G楸菊轮饕榻B了程序的控制結(jié)構(gòu)相關(guān)知識,包括學(xué)習(xí)目標(biāo)、程序基本結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)、異常處理和random庫的使用,具體內(nèi)容如下:本章總結(jié)
循環(huán)結(jié)構(gòu)for語句基礎(chǔ)語法格式一:遍歷序列,依次將元素傳遞給迭代變量并執(zhí)行內(nèi)部語句,遍歷序列可以是字符串、列表等?;A(chǔ)語法格式二:通過指定初始值、終止值和步進(jìn)值,控制循環(huán)次數(shù),常用于輸出九九乘法表、100以前的偶數(shù)等。else語句:循環(huán)正常結(jié)束后可執(zhí)行else語句塊。while語句:條件為真時重復(fù)執(zhí)行語句塊,可計算每月存款達(dá)到目標(biāo)總額所需月數(shù),也可在循環(huán)中使用else語句。特殊流程控制語句break語句:立即終止當(dāng)前循環(huán)(最內(nèi)層),跳出循環(huán)體執(zhí)行后續(xù)代碼,終止循環(huán)時不執(zhí)行else語句塊。continue語句:結(jié)束本次循環(huán),立即開始下一次循環(huán),不執(zhí)行本次循環(huán)后續(xù)代碼。異常處理異常概念:Python中異常是表示錯誤的對象,程序運(yùn)行出錯時需捕獲處理,否則終止執(zhí)行。處理方式基本使用:try-except語句,將可能出錯語句放try塊,出錯執(zhí)行except塊處理錯誤。高級使用:try-except-else-finally語句,輸入無誤執(zhí)行else塊,finally塊一定執(zhí)行。random庫的使用:Python標(biāo)準(zhǔn)庫,用于生成偽隨機(jī)數(shù)。需導(dǎo)入random模塊,包含seed、random、randint、uniform、choice、shuffle等函數(shù),分別用于初始化隨機(jī)數(shù)種子、生成隨機(jī)小數(shù)、整數(shù)、浮點數(shù)、從序列中隨機(jī)選元素、打亂序列元素順序等操作。課后自學(xué)的建議在學(xué)習(xí)完關(guān)于程序控制結(jié)構(gòu)的內(nèi)容后,為了更深入地掌握相關(guān)知識并提升編程能力,以下是一些自學(xué)建議:深入理解概念對順序結(jié)構(gòu)、選擇結(jié)構(gòu)(單分支、二分支、多分支)、循環(huán)結(jié)構(gòu)(for循環(huán)、while循環(huán))以及異常處理等概念進(jìn)行詳細(xì)剖析,確保不僅知曉其定義,更能理解它們在程序執(zhí)行流程中的作用和邏輯關(guān)系。針對每種結(jié)構(gòu),回顧文檔中的實例,自己動手在紙上或腦海中模擬程序執(zhí)行過程,清晰把握每個步驟的執(zhí)行順序和條件判斷依據(jù),強(qiáng)化對控制結(jié)構(gòu)運(yùn)行機(jī)制的理解。對比分析異同細(xì)致對比不同選擇結(jié)構(gòu)(如if-else和if-elif-else)在
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 出售轉(zhuǎn)讓沖床合同范例
- 別墅門窗安裝合同范例
- 東莞超市轉(zhuǎn)讓合同范例
- 農(nóng)村自建房用地合同范例
- 住宅房屋合同范例
- 養(yǎng)豬項目合同范例
- 個人建房轉(zhuǎn)讓合同范例
- 買賣物資居間合同范例
- 個人勞動照合同范本
- 醫(yī)院服裝采購合同范本
- 在線心理健康咨詢行業(yè)現(xiàn)狀分析及未來三至五年行業(yè)發(fā)展報告
- 電動三輪車購銷合同
- 淋巴瘤的免疫靶向治療
- 校園駐校教官培訓(xùn)
- 自然辯證法論述題146題帶答案(可打印版)
- 儲運(yùn)部部長年終總結(jié)
- 物業(yè)管理裝修管理規(guī)定(5篇)
- (新版)工業(yè)機(jī)器人系統(tǒng)操作員(三級)職業(yè)鑒定理論考試題庫(含答案)
- 教育環(huán)境分析報告
- 人力資源服務(wù)公司章程
- (正式版)CB∕T 4552-2024 船舶行業(yè)企業(yè)安全生產(chǎn)文件編制和管理規(guī)定
評論
0/150
提交評論