Python數(shù)據(jù)分析及應(yīng)用 課件 第3章程序的控制結(jié)構(gòu)_第1頁(yè)
Python數(shù)據(jù)分析及應(yīng)用 課件 第3章程序的控制結(jié)構(gòu)_第2頁(yè)
Python數(shù)據(jù)分析及應(yīng)用 課件 第3章程序的控制結(jié)構(gòu)_第3頁(yè)
Python數(shù)據(jù)分析及應(yīng)用 課件 第3章程序的控制結(jié)構(gòu)_第4頁(yè)
Python數(shù)據(jù)分析及應(yīng)用 課件 第3章程序的控制結(jié)構(gòu)_第5頁(yè)
已閱讀5頁(yè),還剩29頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

云南財(cái)經(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庫(kù)的使用知識(shí)目標(biāo):掌握程序的三種基本結(jié)構(gòu):順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu),掌握單分支、二分支和多分支三種選擇結(jié)構(gòu),掌握f(shuō)or循環(huán)、while循環(huán)兩種循環(huán)結(jié)構(gòu)。技能目標(biāo):理解分支的概念及程序控制的關(guān)系,掌握二分支決策方法,掌握多分支決策方法,掌握f(shuō)or循環(huán)的使用方法,掌握while循環(huán)的使用方法。素質(zhì)目標(biāo):具備一定的決策能力和規(guī)劃能力,具備發(fā)展的眼光,培養(yǎng)全局思維,能夠合理規(guī)劃自己的職業(yè)生涯。學(xué)習(xí)目標(biāo)

稅收取之于民、用之于民,我們?cè)诼男屑{稅的法定義務(wù)時(shí),也在享受稅收給整個(gè)社會(huì)帶來(lái)的積極影響。以個(gè)人所得稅為例,目前個(gè)人所得稅的起征點(diǎn)是5000,并且采用差額累進(jìn)制。只有收入超過(guò)5000元時(shí)我們才需要繳納個(gè)人所得稅,收入越高需要繳納的稅款越多,并且國(guó)家還考慮到撫養(yǎng)小孩和贍養(yǎng)老人的壓力,提高了個(gè)人所得稅的起征點(diǎn)。目前,個(gè)人工資扣稅標(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è)計(jì)一個(gè)Python程序計(jì)算個(gè)人所得稅?本章導(dǎo)讀

結(jié)構(gòu)化編程鼓勵(lì)將復(fù)雜問(wèn)題分解成一系列簡(jiǎn)單、明確的步驟,使得代碼易于理解。清晰的模塊劃分和邏輯流程使得整個(gè)程序的結(jié)構(gòu)清晰,目標(biāo)明確,便于理解和維護(hù)。采用結(jié)構(gòu)化程序設(shè)計(jì)方法可以顯著提高程序的可讀性、可維護(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è)計(jì)的核心,與之相對(duì)的是面向?qū)ο蟪绦蛟O(shè)計(jì)。C語(yǔ)言就是結(jié)構(gòu)化語(yǔ)言,而C++、Java或者Python等都是面向?qū)ο蟮恼Z(yǔ)言。調(diào)試Python程序時(shí),經(jīng)常會(huì)報(bào)出一些異常。一方面可能是寫(xiě)程序時(shí)由于疏忽或者考慮不全造成了錯(cuò)誤,這時(shí)就需要根據(jù)異常分析程序結(jié)構(gòu),改正錯(cuò)誤;另一方面,有些異常是不可避免的,但我們可以對(duì)異常進(jìn)行捕獲處理,防止程序終止。本章導(dǎo)讀1.順序結(jié)構(gòu)順序結(jié)構(gòu)的執(zhí)行順序是自上而下,依次執(zhí)行。順序結(jié)構(gòu)的程序設(shè)計(jì)是最簡(jiǎn)單的,它表示程序按照代碼的書(shū)寫(xiě)順序從上到下依次執(zhí)行,只要按照解決問(wèn)題的順序?qū)懗鱿鄳?yīng)的語(yǔ)句就行。3.1程序的基本結(jié)構(gòu)程序由語(yǔ)句構(gòu)成,根據(jù)項(xiàng)目或者算法的實(shí)際需求執(zhí)行語(yǔ)句,程序的具體執(zhí)行是由流程控制語(yǔ)句實(shí)現(xiàn)的。結(jié)構(gòu)化程序設(shè)計(jì)分三種基本結(jié)構(gòu):順序結(jié)構(gòu)、選擇結(jié)構(gòu)(分支結(jié)構(gòu))、循環(huán)結(jié)構(gòu)。采用結(jié)構(gòu)化程序設(shè)計(jì)方法,程序結(jié)構(gòu)清晰,易于閱讀、測(cè)試、排錯(cuò)和修改。由于每個(gè)模塊執(zhí)行單一功能,模塊間聯(lián)系較少,使程序編制比過(guò)去更簡(jiǎn)單,程序更可靠,而且增加了可維護(hù)性,每個(gè)模塊可以獨(dú)立編制、測(cè)試。ABC圖3-1順序結(jié)構(gòu)的流程圖2.選擇結(jié)構(gòu)選擇結(jié)構(gòu)(分支結(jié)構(gòu))是程序根據(jù)條件表達(dá)式的值來(lái)決定執(zhí)行哪一部分的代碼。顧名思義,當(dāng)程序到了一定的處理過(guò)程時(shí),遇到了很多分支,無(wú)法按直線走下去,程序的處理步驟出現(xiàn)了分支,它需要根據(jù)某一特定的條件選擇其中的一個(gè)分支執(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í)行一段代碼,直到滿足某個(gè)條件為止。語(yǔ)句不斷的重復(fù),被稱作循環(huán),循環(huán)結(jié)構(gòu)通常用來(lái)表示反復(fù)執(zhí)行一個(gè)程序或某些操作的過(guò)程,直到某條件為假(或?yàn)檎?時(shí)才可終止循環(huán)。在循環(huán)結(jié)構(gòu)中最主要的是:什么時(shí)候可以執(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)程序到了一定的處理過(guò)程時(shí),遇到了很多分支,無(wú)法按直線走下去,程序的處理步驟出現(xiàn)了分支,它需要根據(jù)某一特定的條件選擇其中的一個(gè)分支執(zhí)行。選擇結(jié)構(gòu)有單一條件分支選擇結(jié)構(gòu)(if)、二條件分支選擇結(jié)構(gòu)(else從句)、多條件分支選擇結(jié)構(gòu)(elif子句)三種形式。在Python中,選擇結(jié)構(gòu)通常使用if、elif和else語(yǔ)句來(lái)實(shí)現(xiàn)。這些語(yǔ)句允許程序根據(jù)條件測(cè)試的結(jié)果執(zhí)行不同的代碼塊。在選擇結(jié)構(gòu)中,if語(yǔ)句用來(lái)檢驗(yàn)一個(gè)條件,如果條件為真,我們運(yùn)行一塊語(yǔ)句(稱為if-塊),否則我們處理另外一塊語(yǔ)句(稱為else-塊),如果有多個(gè)分支選擇,再根據(jù)分支條件,選擇對(duì)應(yīng)的語(yǔ)句塊處理(稱為elif-塊)。else從句和elif子句是可選的。選擇結(jié)構(gòu)由三部分組成:關(guān)鍵字本身,用于判斷結(jié)果真假的條件表達(dá)式,以及當(dāng)表達(dá)式為真(True)或者非零時(shí)執(zhí)行的代碼塊。3.2程序的選擇結(jié)構(gòu)選擇結(jié)構(gòu)顧名思義,當(dāng)程序到了一定的處理過(guò)程時(shí),遇到了很多分支,無(wú)法按直線走下去,程序的處理步驟出現(xiàn)了分支,它需要根據(jù)某一特定的條件選擇其中的一個(gè)分支執(zhí)行。選擇結(jié)構(gòu)有單一條件分支選擇結(jié)構(gòu)(if)、二條件分支選擇結(jié)構(gòu)(else從句)、多條件分支選擇結(jié)構(gòu)(elif子句)三種形式。在Python中,選擇結(jié)構(gòu)通常使用if、elif和else語(yǔ)句來(lái)實(shí)現(xiàn)。這些語(yǔ)句允許程序根據(jù)條件測(cè)試的結(jié)果執(zhí)行不同的代碼塊。在選擇結(jié)構(gòu)中,if語(yǔ)句用來(lái)檢驗(yàn)一個(gè)條件,如果條件為真,我們運(yùn)行一塊語(yǔ)句(稱為if-塊),否則我們處理另外一塊語(yǔ)句(稱為else-塊),如果有多個(gè)分支選擇,再根據(jù)分支條件,選擇對(duì)應(yīng)的語(yǔ)句塊處理(稱為elif-塊)。else從句和elif子句是可選的。選擇結(jié)構(gòu)由三部分組成:關(guān)鍵字本身,用于判斷結(jié)果真假的條件表達(dá)式,以及當(dāng)表達(dá)式為真(True)或者非零時(shí)執(zhí)行的代碼塊。3.2程序的選擇結(jié)構(gòu)選擇結(jié)構(gòu)當(dāng)條件為真時(shí),執(zhí)行相應(yīng)的代碼塊。如何判斷條件的真假?在Python中,任何非零,非空對(duì)象都是真,除真和None以外其他的都是假(False)。條件判斷使用關(guān)系運(yùn)算符和邏輯運(yùn)算符來(lái)表示。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是同一個(gè)對(duì)象x

isnot

yx和y不是同一個(gè)對(duì)象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的計(jì)算值orxory布爾"或"-如果x是True,它返回True,否則它返回y的計(jì)算值notnotx布爾"非"-如果x為T(mén)rue,返回False。如果x為False,它返回True3.2.1單分支選擇結(jié)構(gòu)3.2程序的選擇結(jié)構(gòu)if語(yǔ)句是最基本的條件判斷結(jié)構(gòu),用于測(cè)試一個(gè)條件是否為真(True)。如果條件為真,則執(zhí)行緊跟在if后面的代碼塊。單分支選擇結(jié)構(gòu)的if語(yǔ)句語(yǔ)法格式如下:if<條件>:<語(yǔ)句塊1>if語(yǔ)句根據(jù)給出的條件,決定下一步怎么做?如果條件為真(True),就執(zhí)行語(yǔ)句塊1中的代碼,為假(False)就不執(zhí)行語(yǔ)句塊1中的代碼。無(wú)論條件為真或者為假,控制都會(huì)轉(zhuǎn)到if語(yǔ)句后的下一條語(yǔ)句。實(shí)例3-1計(jì)算個(gè)人所得稅(單分支示例),假設(shè)月薪5000元以上稅率為3%。salary=eval(input("請(qǐng)輸入月薪:"))tax=0ifsalary>5000:tax=salary*0.03income=salary-taxprint("月薪:{}元,本月繳稅:{}元,實(shí)際收入:{}元".format(salary,tax,income))程序運(yùn)行結(jié)果:請(qǐng)輸入月薪:6899月薪:6899元,本月繳稅:206.97元,實(shí)際收入:6692.03元在這個(gè)程序中,用戶輸入月薪,然后判斷月薪是否大于5000元,如果月薪大于5000元,計(jì)算所得稅為月薪的3%。在這個(gè)例子中,使用eval(input())語(yǔ)句函數(shù)取得用戶輸入的月薪。3.2.2二分支選擇結(jié)構(gòu)3.2程序的選擇結(jié)構(gòu)二分支選擇結(jié)構(gòu)增加了else語(yǔ)句,根據(jù)判斷條件結(jié)果而選擇不同向前路徑的運(yùn)行方式。if-else語(yǔ)句用于測(cè)試一個(gè)條件,如果該條件為真,則執(zhí)行if代碼塊;否則,執(zhí)行else代碼塊。在實(shí)例3-1計(jì)算個(gè)人所得稅(單分支示例)中,用戶輸入月薪,然后判斷月薪是否大于5000元,如果月薪大于5000元,使得if語(yǔ)句的條件為真,程序執(zhí)行語(yǔ)句塊1中的代碼,計(jì)算所得稅為月薪的3%。如果月薪小于或者等于5000元,可以用else語(yǔ)句增加另外的選擇。二分支選擇結(jié)構(gòu)的if-else語(yǔ)句語(yǔ)法格式如下:if<條件>:<語(yǔ)句塊1>else:<語(yǔ)句塊2>實(shí)例3-2計(jì)算個(gè)人所得稅(二分支示例),假設(shè)月薪5000元以上稅率為3%,月薪小于或者等于5000元稅率為0。salary=eval(input("請(qǐng)輸入月薪:"))ifsalary>5000:tax=salary*0.03else:tax=0income=salary-taxprint("月薪:{}元,本月繳稅:{}元,實(shí)際收入:{}元".format(salary,tax,income))程序運(yùn)行結(jié)果:請(qǐng)輸入月薪:4500月薪:4500元,本月繳稅:0元,實(shí)際收入:4500元二分支選擇結(jié)構(gòu)緊湊形式的if-else語(yǔ)句語(yǔ)法格式如下:<表達(dá)式1>if<條件>else<表達(dá)式2>實(shí)例3-3計(jì)算個(gè)人所得稅(二分支緊湊形式示例),假設(shè)月薪5000元以上稅率為3%,月薪小于或者等于5000元稅率為0。salary=eval(input("請(qǐng)輸入月薪:"))print("本月繳稅:",salary*0.03)if(salary>5000)elseprint("本月繳稅:",0)程序運(yùn)行結(jié)果:請(qǐng)輸入月薪:6899本月繳稅:206.973.2.3多分支選擇結(jié)構(gòu)二分支選擇結(jié)構(gòu)的if-else語(yǔ)句只有兩種選擇,如果有多個(gè)條件需要多種選擇,可以使用elif語(yǔ)句。elif語(yǔ)句(是elseif的縮寫(xiě)),它檢查多個(gè)表達(dá)式是否為真,并在為真時(shí)執(zhí)行特定代碼塊中的代碼。如果所有的if和elif條件都不滿足,則執(zhí)行最后的else部分。和else一樣,elif聲明是可選的,不同的是,if語(yǔ)句后最多只能有一個(gè)else語(yǔ)句,但可以有任意數(shù)量的elif語(yǔ)句。3.2程序的選擇結(jié)構(gòu)多分支選擇結(jié)構(gòu)的if-elif-else語(yǔ)句語(yǔ)法格式如下:if<條件1>:<語(yǔ)句塊1>elif<條件2>:<語(yǔ)句塊2>……elif<條件N-1>:<語(yǔ)句塊N-1>else:<語(yǔ)句塊N>3.2.3多分支選擇結(jié)構(gòu)3.2程序的選擇結(jié)構(gòu)實(shí)例3-4計(jì)算個(gè)人所得稅(多分支示例)月薪5000元以下免稅,5000-8000元稅率為3%,8000-17000元為10%,17000-30000元為20%,30000-40000元為25%,40000-60000元為30%,60000-85000元為35%,85000元以上為45%。salary=eval(input("請(qǐng)輸入月薪:"))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("月薪:{}元,本月繳稅:{}元,實(shí)際收入:{}元".format(salary,tax,income))程序運(yùn)行結(jié)果:請(qǐng)輸入月薪:4500月薪:4500元,本月繳稅:0元,實(shí)際收入:4500元3.2.3多分支選擇結(jié)構(gòu)如果將計(jì)算表達(dá)式中的數(shù)值預(yù)先計(jì)算出,實(shí)例3-4可以改寫(xiě)為簡(jiǎn)化形式。3.2程序的選擇結(jié)構(gòu)實(shí)例3-5計(jì)算個(gè)人所得稅(多分支示例)簡(jiǎn)化形式。salary=eval(input("請(qǐng)輸入月薪:"))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("月薪:{}元,本月繳稅:{}元,實(shí)際收入:{}元".format(salary,tax,income))程序運(yùn)行結(jié)果:請(qǐng)輸入月薪:8000月薪:8000元,本月繳稅:90.0元,實(shí)際收入:7910.0元實(shí)例3-6判斷股票是否漲?;蛘叩?多分支示例)漲停和跌停的設(shè)定是根據(jù)股票價(jià)格波動(dòng)的情況來(lái)確定的。在中國(guó)A股市場(chǎng)中,漲停價(jià)格和跌停價(jià)格的計(jì)算分別為:漲停價(jià)格=前一個(gè)交易日收盤(pán)價(jià)×1.1跌停價(jià)格=前一個(gè)交易日收盤(pán)價(jià)×0.93.2程序的選擇結(jié)構(gòu)如果某只股票的前一個(gè)交易日收盤(pán)價(jià)為10元,那么當(dāng)天的漲停價(jià)為11元,跌停價(jià)為9元close=eval(input("請(qǐng)輸入股票的前一個(gè)交易日收盤(pán)價(jià):"))nowprice=eval(input("請(qǐng)輸入股票交易價(jià)格:"))top=close*1.1low=close*0.9ifnowprice<low:print(“股票交易價(jià)格{}小于跌停價(jià){},股票不能在當(dāng)前價(jià)格交易?!?format(nowprice,low))elifnowprice==low:print(“股票交易價(jià)格{}等于跌停價(jià){},股票交易將停盤(pán)?!?format(nowprice,low))elifnowprice==top:print(“股票交易價(jià)格{}等于漲停價(jià){},股票交易將停盤(pán)?!?format(nowprice,top))elifnowprice>top:print(“股票交易價(jià)格{}大于漲停價(jià){},股票不能在當(dāng)前價(jià)格交易?!?format(nowprice,top))else:print(“股票可以正常交易。”.format(nowprice,top))程序運(yùn)行結(jié)果:請(qǐng)輸入股票的前一個(gè)交易日收盤(pán)價(jià):51請(qǐng)輸入股票交易價(jià)格:58股票交易價(jià)格58大于漲停價(jià)56.1,股票不能在當(dāng)前價(jià)格交易。3.3 程序的循環(huán)結(jié)構(gòu)程序的循環(huán)結(jié)構(gòu)是編程語(yǔ)言中用于執(zhí)行重復(fù)任務(wù)的一類控制結(jié)構(gòu)。循環(huán)允許一段代碼多次執(zhí)行,直到滿足某個(gè)終止條件。怎么樣才能重復(fù)多次呢?循環(huán)語(yǔ)句在某種條件下,循環(huán)的執(zhí)行某段代碼塊,并在符合條件的情況下跳出該段循環(huán),其目的重復(fù)的處理相同任務(wù),Python循環(huán)語(yǔ)句主要有for語(yǔ)句和while語(yǔ)句。循環(huán)結(jié)構(gòu)For語(yǔ)句While語(yǔ)句特殊的流程控制語(yǔ)句Break語(yǔ)句Continue語(yǔ)句(一)for語(yǔ)句基礎(chǔ)語(yǔ)法3.3.1for語(yǔ)句1.for語(yǔ)句語(yǔ)法格式一for迭代變量in遍歷序列:執(zhí)行語(yǔ)句......(1)執(zhí)行過(guò)程:依次將‘遍歷序列’的每一個(gè)值傳遞給‘迭代變量’,每傳遞一個(gè)值時(shí)執(zhí)行一次內(nèi)部語(yǔ)句,直至‘遍歷序列’的最后一個(gè)元素,for語(yǔ)句退出。(2)遍歷序列可以是字符串(str),列表(list),元組(tuple)…。實(shí)例3-7遍歷字符串。strs=”ThisisPython”forcinstrs:print(c,end="*")程序運(yùn)行結(jié)果:T*h*i*s**i*s**P*y*t*h*o*n*實(shí)例3-8遍歷股票過(guò)去5個(gè)交易日的收盤(pán)價(jià)列表。closing=[52.45,55.20,53.75,56.50,53.80]forpriceinclosing:print(price)程序運(yùn)行結(jié)果:52.4555.253.7556.553.8(一)for語(yǔ)句基礎(chǔ)語(yǔ)法3.3.1for語(yǔ)句2.for語(yǔ)句語(yǔ)法格式二for迭代變量inrange(start,end[,step]):

執(zhí)行語(yǔ)句......參數(shù)說(shuō)明:start:初始值(默認(rèn)為‘0’)end:終止值step:步進(jìn)值(默認(rèn)為‘1’),即每次重復(fù)操作時(shí)比上一次操作所增長(zhǎng)的數(shù)值。執(zhí)行過(guò)程:第一步:將start值傳遞給‘迭代變量’,然后執(zhí)行一次內(nèi)部語(yǔ)句;第二步:在start的基礎(chǔ)上+step再次傳遞給‘迭代變量’,如果‘迭代變量’的值小于‘end’的值,則再次執(zhí)行內(nèi)部語(yǔ)句,否則退出for循環(huán)。實(shí)例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語(yǔ)句基礎(chǔ)語(yǔ)法3.3.1for語(yǔ)句2.for語(yǔ)句語(yǔ)法格式二實(shí)例3-10輸出100以前的偶數(shù)foriinrange(0,101,2):print(i,end="")程序運(yùn)行結(jié)果:02468101214161820222426283032343638404244464850525456586062646668707274767880828486889092949698100(二)else語(yǔ)句在循環(huán)條件正常結(jié)束后如果要執(zhí)行某段代碼塊,則可以用else語(yǔ)句來(lái)操作。循環(huán)的正常結(jié)束后,就會(huì)觸發(fā)else語(yǔ)句。3.3.1for語(yǔ)句for-else語(yǔ)句可以總結(jié)成以下說(shuō)明:如果依次做完了所有的事情(for正常結(jié)束),就去做其他事(執(zhí)行else),若做到一半就停下來(lái)不做了(中途遇到break),就不去做其他事了(不執(zhí)行else)。實(shí)例3-11for-in-else實(shí)例。foriinrange(10):print(i,end="")else:print(“循環(huán)正常結(jié)束”)程序運(yùn)行結(jié)果:0123456789循環(huán)正常結(jié)束(一)while語(yǔ)句語(yǔ)法格式3.3.2while語(yǔ)句while循環(huán)條件:循環(huán)操作執(zhí)行過(guò)程:判斷表達(dá)式,如果為真(True)則執(zhí)行循環(huán)操作語(yǔ)句,如果為假(False)則退出while語(yǔ)句。循環(huán)條件最終的返回值必須是False或True。實(shí)例3-12每個(gè)月向銀行存入固定金額的錢(qián)(比如1000元),年利率是固定的3%,按月復(fù)利計(jì)算。需要多少個(gè)月才能使賬戶總額達(dá)到10,000元deposit=eval(input(“請(qǐng)輸入每月存款額”))rate=0.03#年利率target=eval(input(“請(qǐng)輸入目標(biāo)總額”))total=0months=0mon_rate=rate/12whiletotal<target:total+=total*mon_rate

total+=deposit

months+=1print("需要{}個(gè)月后,賬戶總額將達(dá)到或超過(guò){}元。".format(months,target))

程序運(yùn)行結(jié)果:請(qǐng)輸入每月存款額:200請(qǐng)輸入目標(biāo)總額:10000需要48個(gè)月后,賬戶總額將達(dá)到或超過(guò)10000元。只要在條件為真的情況下,while語(yǔ)句允許重復(fù)執(zhí)行一塊語(yǔ)句。如果條件成立(True),重復(fù)執(zhí)行相同操作,條件不符合,跳出循環(huán)。(二)循環(huán)中使用else語(yǔ)句語(yǔ)法格式3.3.2while語(yǔ)句while循環(huán)條件:循環(huán)操作else:

執(zhí)行操作實(shí)例3-13while-else實(shí)例x=3while(x>0):x-=1print("HelloWorld")else:print("done")程序運(yùn)行結(jié)果:HelloWorldHelloWorldHelloWorlddone(一)break語(yǔ)句3.3.3特殊的流程控制語(yǔ)句break語(yǔ)句用于立即終止當(dāng)前循環(huán)(最內(nèi)層的循環(huán)),跳出循環(huán)體,并繼續(xù)執(zhí)行循環(huán)之后的代碼。如果break語(yǔ)句出現(xiàn)在嵌套循環(huán)中,它將只終止最內(nèi)層的循環(huán)。如果從for或while循環(huán)中終止,任何對(duì)應(yīng)的循環(huán)else塊將不執(zhí)行。實(shí)例3-14break語(yǔ)句實(shí)例forletterin'while':ifletter=='i':breakprint('當(dāng)前字母為:',letter)程序運(yùn)行結(jié)果:當(dāng)前字母:w當(dāng)前字母:h循環(huán)除了在條件不滿足的時(shí)候結(jié)束外還可以選擇在某些條件下結(jié)束循環(huán),結(jié)束循環(huán)共有兩個(gè)命令break、continue。break語(yǔ)句用來(lái)終止循環(huán)語(yǔ)句,程序控制跳出循環(huán)執(zhí)行循環(huán)體外的下一條語(yǔ)句。Continue語(yǔ)句用來(lái)結(jié)束本次循環(huán),緊接著執(zhí)行下一次的循環(huán)(二)continue語(yǔ)句3.3.3特殊的流程控制語(yǔ)句continue語(yǔ)句用于跳過(guò)當(dāng)前循環(huán)的剩余部分,并立即開(kāi)始下一次循環(huán)。continue之后的代碼在當(dāng)次循環(huán)中不會(huì)被執(zhí)行實(shí)例3-15continue語(yǔ)句實(shí)例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)就不會(huì)執(zhí)行當(dāng)前的else語(yǔ)句,而使用continue關(guān)鍵字快速進(jìn)入下一論循環(huán),或者沒(méi)有使用其他關(guān)鍵字,循環(huán)的正常結(jié)束后,就會(huì)觸發(fā)else語(yǔ)句。只有循環(huán)完所有次數(shù),才會(huì)執(zhí)行else。break可以阻止else語(yǔ)句塊的執(zhí)行。break是用于完全終止循環(huán),而continue是用于跳過(guò)當(dāng)前迭代的剩余部分并繼續(xù)下一次迭代。正確選擇使用break或continue可以有效地控制循環(huán)流程,使程序邏輯更加靈活和高效。3.4 程序的異常處理什么是異常?異常是Python對(duì)象,表示一個(gè)錯(cuò)誤。當(dāng)Python腳本發(fā)生異常時(shí)我們需要捕獲處理它,否則程序會(huì)終止執(zhí)行。在程序運(yùn)行過(guò)程中,總會(huì)遇到各種各樣的錯(cuò)誤,有的錯(cuò)誤是程序編寫(xiě)有問(wèn)題造成的。我們?nèi)绾翁幚懋惓#钩绦蛘_\(yùn)行?我們可以使用try…except語(yǔ)句來(lái)處理異常。我們把所有可能引發(fā)錯(cuò)誤的語(yǔ)句放在try-語(yǔ)句塊中,然后在except語(yǔ)句塊中處理所有的錯(cuò)誤和異常。except語(yǔ)句塊可以專門(mén)處理單一的錯(cuò)誤或異常,或者一組包括在圓括號(hào)內(nèi)的錯(cuò)誤/異常。如果沒(méi)有給出錯(cuò)誤或異常的名稱,它會(huì)處理所有的錯(cuò)誤和異常。對(duì)于每個(gè)try-語(yǔ)句塊,至少都有一個(gè)相關(guān)聯(lián)的except-語(yǔ)句塊。如果某個(gè)錯(cuò)誤或異常沒(méi)有被處理,默認(rèn)的Python處理器就會(huì)被調(diào)用。它會(huì)終止程序的運(yùn)行,并且打印一個(gè)消息,我們已經(jīng)看到了這樣的處理。還可以讓try…except關(guān)聯(lián)上一個(gè)else從句。當(dāng)沒(méi)有異常發(fā)生的時(shí)候,else從句將被執(zhí)行。BaseException所有異常的基類,父類Exception常規(guī)錯(cuò)誤的基類StandardError所有的內(nèi)建標(biāo)準(zhǔn)異常的基類,標(biāo)準(zhǔn)化錯(cuò)誤ImportError導(dǎo)入模塊錯(cuò)誤ArithmeticError所有數(shù)值計(jì)算錯(cuò)誤的基類FloatingPointError浮點(diǎn)計(jì)算錯(cuò)誤AssertionError斷言語(yǔ)句失敗AttributeError對(duì)象沒(méi)有這個(gè)屬性Warning警告的基類警告類也可以自定義異常。系統(tǒng)定義的異常:1.異常處理的基本使用3.4 程序的異常處理異常處理語(yǔ)句語(yǔ)法格式一:try:<語(yǔ)句塊1>except<異常類型>:<語(yǔ)句塊2>程序首先執(zhí)行語(yǔ)句塊1,如果輸入有誤,接著執(zhí)行語(yǔ)句塊2。如果輸入沒(méi)有錯(cuò)誤,執(zhí)行try…except語(yǔ)句的后續(xù)語(yǔ)句。實(shí)例3-16異常處理示例try:num=eval(input("請(qǐng)輸入股票買(mǎi)入價(jià)格:"))print(num**2)except:print("輸入不是一個(gè)數(shù)值!")程序運(yùn)行結(jié)果:請(qǐng)輸入股票買(mǎi)入價(jià)格:wy輸入不是一個(gè)數(shù)值!2.異常處理的高級(jí)使用3.4 程序的異常處理異常處理基本語(yǔ)句語(yǔ)法格式二:try:<語(yǔ)句塊1>except:<語(yǔ)句塊2>else:<語(yǔ)句塊3>finally:<語(yǔ)句塊4>程序首先執(zhí)行語(yǔ)句塊1,如果輸入有誤,接著執(zhí)行語(yǔ)句塊2。如果輸入沒(méi)有錯(cuò)誤,執(zhí)行else語(yǔ)句后的語(yǔ)句塊2,finally對(duì)應(yīng)語(yǔ)句塊4一定執(zhí)行,else對(duì)應(yīng)語(yǔ)句塊3在不發(fā)生異常時(shí)執(zhí)行。實(shí)例3-17異常處理的高級(jí)使用示例flag=Falsewhile(flag==False):try:num=evel(input("請(qǐng)輸入股票買(mǎi)入價(jià)格:"))print(num**2)except:print("輸入錯(cuò)誤!請(qǐng)重新輸入股票價(jià)格!")else:flag=Truefinally:print("輸入的是數(shù)值!")程序運(yùn)行結(jié)果:請(qǐng)輸入股票買(mǎi)入價(jià)格:wy輸入錯(cuò)誤!請(qǐng)重新輸入股票價(jià)格!輸入的是數(shù)值!本章總結(jié)學(xué)習(xí)目標(biāo)知識(shí)目標(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í)行語(yǔ)句,如計(jì)算商品平均價(jià)格。多數(shù)情況下作為程序一部分與其他結(jié)構(gòu)構(gòu)成復(fù)雜程序。選擇結(jié)構(gòu):根據(jù)條件表達(dá)式值決定執(zhí)行哪部分代碼,有單分支、二分支和多分支三種形式,通過(guò)if、elif和else語(yǔ)句實(shí)現(xiàn)。循環(huán)結(jié)構(gòu):重復(fù)執(zhí)行一段代碼直到滿足條件,主要有for語(yǔ)句和while語(yǔ)句。選擇結(jié)構(gòu)單分支選擇結(jié)構(gòu):if語(yǔ)句測(cè)試條件,為真執(zhí)行緊跟代碼塊,如計(jì)算月薪大于5000元的個(gè)人所得稅。二分支選擇結(jié)構(gòu):if-else語(yǔ)句根據(jù)條件選擇執(zhí)行代碼塊,有緊湊形式,如計(jì)算不同月薪范圍的個(gè)人所得稅。多分支選擇結(jié)構(gòu):if-elif-else語(yǔ)句處理多個(gè)條件選擇,如根據(jù)不同月薪范圍計(jì)算個(gè)人所得稅,還可用于判斷股票漲?;虻G楸菊轮饕榻B了程序的控制結(jié)構(gòu)相關(guān)知識(shí),包括學(xué)習(xí)目標(biāo)、程序基本結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)、異常處理和random庫(kù)的使用,具體內(nèi)容如下:本章總結(jié)

循環(huán)結(jié)構(gòu)for語(yǔ)句基礎(chǔ)語(yǔ)法格式一:遍歷序列,依次將元素傳遞給迭代變量并執(zhí)行內(nèi)部語(yǔ)句,遍歷序列可以是字符串、列表等?;A(chǔ)語(yǔ)法格式二:通過(guò)指定初始值、終止值和步進(jìn)值,控制循環(huán)次數(shù),常用于輸出九九乘法表、100以前的偶數(shù)等。else語(yǔ)句:循環(huán)正常結(jié)束后可執(zhí)行else語(yǔ)句塊。while語(yǔ)句:條件為真時(shí)重復(fù)執(zhí)行語(yǔ)句塊,可計(jì)算每月存款達(dá)到目標(biāo)總額所需月數(shù),也可在循環(huán)中使用else語(yǔ)句。特殊流程控制語(yǔ)句break語(yǔ)句:立即終止當(dāng)前循環(huán)(最內(nèi)層),跳出循環(huán)體執(zhí)行后續(xù)代碼,終止循環(huán)時(shí)不執(zhí)行else語(yǔ)句塊。continue語(yǔ)句:結(jié)束本次循環(huán),立即開(kāi)始下一次循環(huán),不執(zhí)行本次循環(huán)后續(xù)代碼。異常處理異常概念:Python中異常是表示錯(cuò)誤的對(duì)象,程序運(yùn)行出錯(cuò)時(shí)需捕獲處理,否則終止執(zhí)行。處理方式基本使用:try-except語(yǔ)句,將可能出錯(cuò)語(yǔ)句放try塊,出錯(cuò)執(zhí)行except塊處理錯(cuò)誤。高級(jí)使用:try-except-else-finally語(yǔ)句,輸入無(wú)誤執(zhí)行else塊,finally塊一定執(zhí)行。random庫(kù)的使用:Python標(biāo)準(zhǔn)庫(kù),用于生成偽隨機(jī)數(shù)。需導(dǎo)入random模塊,包含seed、random、randint、uniform、choice、shuffle等函數(shù),分別用于初始化隨機(jī)數(shù)種子、生成隨機(jī)小數(shù)、整數(shù)、浮點(diǎn)數(shù)、從序列中隨機(jī)選元素、打亂序列元素順序等操作。課后自學(xué)的建議在學(xué)習(xí)完關(guān)于程序控制結(jié)構(gòu)的內(nèi)容后,為了更深入地掌握相關(guān)知識(shí)并提升編程能力,以下是一些自學(xué)建議:深入理解概念對(duì)順序結(jié)構(gòu)、選擇結(jié)構(gòu)(單分支、二分支、多分支)、循環(huán)結(jié)構(gòu)(for循環(huán)、while循環(huán))以及異常處理等概念進(jìn)行詳細(xì)剖析,確保不僅知曉其定義,更能理解它們?cè)诔绦驁?zhí)行流程中的作用和邏輯關(guān)系。針對(duì)每種結(jié)構(gòu),回顧文檔中的實(shí)例,自己動(dòng)手在紙上或腦海中模擬程序執(zhí)行過(guò)程,清晰把握每個(gè)步驟的執(zhí)行順序和條件判斷依據(jù),強(qiáng)化對(duì)控制結(jié)構(gòu)運(yùn)行機(jī)制的理解。對(duì)比分析異同細(xì)致對(duì)比不同選擇結(jié)構(gòu)(如if-else和if-elif-else)在

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論