Python基礎(chǔ)教程(第3版)- 課件 第3章 程序的控制結(jié)構(gòu)_第1頁
Python基礎(chǔ)教程(第3版)- 課件 第3章 程序的控制結(jié)構(gòu)_第2頁
Python基礎(chǔ)教程(第3版)- 課件 第3章 程序的控制結(jié)構(gòu)_第3頁
Python基礎(chǔ)教程(第3版)- 課件 第3章 程序的控制結(jié)構(gòu)_第4頁
Python基礎(chǔ)教程(第3版)- 課件 第3章 程序的控制結(jié)構(gòu)_第5頁
已閱讀5頁,還剩57頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

Python程序設(shè)計授課教師:第3章程序的控制結(jié)構(gòu)課程描述本章將首先對程序的基本結(jié)構(gòu)進(jìn)行介紹,然后重點講解Python的常用語句,包括賦值語句、選擇語句、循環(huán)語句和跳轉(zhuǎn)語句,最后介紹異常處理語句。本章知識點3.1控制結(jié)構(gòu)3.2常用語句3.3異常處理語句3.1程序結(jié)構(gòu)計算機(jī)在解決某個具體問題時,主要有3種情形,分別是順序執(zhí)行所有的語句、選擇執(zhí)行部分語句和循環(huán)執(zhí)行部分語句。程序設(shè)計中對應(yīng)的3種基本結(jié)構(gòu)就是:順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。3.1.1順序結(jié)構(gòu)順序結(jié)構(gòu)是程序中最基本、最簡單的結(jié)構(gòu)。它按照代碼的書寫順序,從上到下、從左到右逐行執(zhí)行。在順序結(jié)構(gòu)中,每個語句或命令都是順序執(zhí)行的,沒有分支或跳轉(zhuǎn)。順序結(jié)構(gòu)適用于那些需要按照固定順序執(zhí)行的任務(wù),如數(shù)據(jù)的輸入、處理、輸出等。它是任何程序的基礎(chǔ),因為即使是最復(fù)雜的程序,也是由一系列順序執(zhí)行的語句構(gòu)成的。3.1.2選擇結(jié)構(gòu)選擇結(jié)構(gòu)允許程序根據(jù)條件判斷來選擇執(zhí)行不同的代碼塊,通常通過條件語句來實現(xiàn)。選擇結(jié)構(gòu)增加了程序的靈活性和決策能力,使程序能夠根據(jù)不同的條件執(zhí)行不同的操作。選擇結(jié)構(gòu)適用于那些需要根據(jù)條件進(jìn)行分支執(zhí)行的任務(wù),如用戶輸入的判斷、數(shù)據(jù)的分類處理、錯誤處理等。它是實現(xiàn)程序邏輯判斷和決策的基礎(chǔ)。3.1.3循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)允許程序重復(fù)執(zhí)行某段代碼,直到滿足某個條件為止,通常通過循環(huán)語句來實現(xiàn)。循環(huán)結(jié)構(gòu)提高了程序的復(fù)用性和效率,使程序能夠處理重復(fù)性的任務(wù)。循環(huán)結(jié)構(gòu)適用于那些需要多次執(zhí)行相同或相似操作的任務(wù),如數(shù)據(jù)的遍歷、累加、求平均值等。它是實現(xiàn)程序自動化和批量處理的基礎(chǔ)。3.1.4三種結(jié)構(gòu)的相互關(guān)系這三種基本結(jié)構(gòu)并不是孤立的,而是可以相互嵌套和組合的。一個程序中可以包含多個順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu),它們共同構(gòu)成了程序的邏輯框架。順序結(jié)構(gòu)是程序的基礎(chǔ),它確保了代碼按照預(yù)定的順序執(zhí)行。選擇結(jié)構(gòu)在順序結(jié)構(gòu)的基礎(chǔ)上增加了決策能力,使程序能夠根據(jù)條件執(zhí)行不同的代碼塊。循環(huán)結(jié)構(gòu)則進(jìn)一步增強了程序的復(fù)用性和效率,使程序能夠處理重復(fù)性的任務(wù)。3.1.4三種結(jié)構(gòu)的相互關(guān)系在實際編程中,通常要根據(jù)問題的需求,合理地選擇和使用這三種基本結(jié)構(gòu),以及它們的組合形式,來構(gòu)建出滿足要求的程序。掌握這三種基本結(jié)構(gòu)及其相互關(guān)系,對于理解和編寫高效、可維護(hù)的程序至關(guān)重要。3.2常用語句3.2.1賦值語句3.2.2選擇語句3.2.3循環(huán)語句3.2.4跳轉(zhuǎn)語句3.2.1賦值語句賦值語句是Python語言中最簡單、最常用的語句。通過賦值語句可以定義變量并為其賦初始值。例如:a=2b=a+5【例題】賦值語句的例子a=10a+=1print(a)a*=10print(a)a**=2print(a)運行結(jié)果如下:1111012100【例題】交換兩個變量的值傳統(tǒng)算法:引入第3個變量作為中間變量a,b=eval(input("請分別輸入a和b的值:"))temp=aa=bb=tempprint(a,b)【例題】交換兩個變量的值在Python中可以直接實現(xiàn)兩個變量值的交換。a,b=eval(input("請分別輸入a和b的值:"))a,b=b,aprint(a,b)3.2.2選擇語句1.單分支結(jié)構(gòu)2.二分支結(jié)構(gòu)3.多分支結(jié)構(gòu)1.單分支結(jié)構(gòu):if語句if條件表達(dá)式:

語句塊【例題】if語句的例子ifa>10:print("變量a大于10")如果語句塊中包含多條語句,則這些語句必須擁有相同的縮進(jìn)。例如:ifa>10:print("變量a大于10")a=10【例題】嵌套if語句的例子ifa>10:

print("變量a大于10")ifa>100:print("變量a大于100")2.二分支結(jié)構(gòu):if…else語句if條件表達(dá)式:

語句塊1else:

語句塊2【例題】if...else語句的例子ifa>10:

print("變量a大于10")else:print(“變量a小于或等于10")3.多分支結(jié)構(gòu):if…elif…else語句if條件表達(dá)式1:

語句塊1elif條件表達(dá)式2:

語句塊2elif條件表達(dá)式3:

語句塊3……else:

語句塊n【例題】成績統(tǒng)計成績統(tǒng)計規(guī)律如下:按照100分制,90分及以上成績?yōu)锳,80到90(不包括90)為B,60到80(不包括80)為C,60以下為D。寫一個程序,當(dāng)用戶輸入分?jǐn)?shù),自動轉(zhuǎn)換為ABCD的形式打印?!纠}】成績統(tǒng)計score=int(input('請輸入一個分?jǐn)?shù):'))ifscore>=90andscore<=100:print('A')elif(score>=80)and(score<90):print('B')elif60<=score<80:print('C')elif60>score>=0:print('D')else:print('輸入錯誤!')【例題】三個數(shù)由小到大輸出從鍵盤輸入三個數(shù)x,y,z,請將這三個數(shù)由小到大輸出。x,y,z=eval(input("請輸入三個數(shù):"))Max=max(x,y)Min=min(x,y)ifz>Max:print(Min,Max,z)elifz<Min:print(z,Min,Max)else:print(Min,z,Max)3.2.3循環(huán)語句1.while語句2.for語句1.while語句while條件表達(dá)式:

循環(huán)語句體【例題】while語句的例子使用while語句求1+2+…+9+10。i=1sum=0whilei<11:sum+=ii+=1print(sum)while語句的擴(kuò)展模式while<條件>:<語句塊1>else:<語句塊2>當(dāng)whlie循環(huán)正常執(zhí)行后,程序會繼續(xù)執(zhí)行else語句中內(nèi)容。else語句只在循環(huán)正常執(zhí)行之后才執(zhí)行。因此,可以在<語句塊2>中放置判斷循環(huán)執(zhí)行情況的語句?!纠}】while語句擴(kuò)展模式的例子s,idx="BIT",0whileidx<len(s):print("循環(huán)進(jìn)行中:"+s[idx])idx+=1else:s="循環(huán)正常結(jié)束"print(s)執(zhí)行結(jié)果:循環(huán)進(jìn)行中:B循環(huán)進(jìn)行中:I循環(huán)進(jìn)行中:T循環(huán)正常結(jié)束2.for語句for循環(huán)變量in遍歷結(jié)構(gòu):

循環(huán)語句體遍歷結(jié)構(gòu)可以是字符串、文件、組合數(shù)據(jù)類型或range()函數(shù)等。2.for語句range()函數(shù)是最常見的一種遍歷結(jié)構(gòu)的形式,其基本語法結(jié)構(gòu)如下:foriinrange(N):

循環(huán)語句體程序在執(zhí)行for語句時,循環(huán)計數(shù)器變量i的取值是由range()函數(shù)生成的要遍歷的數(shù)字序列。2.for語句程序在執(zhí)行for語句時,循環(huán)計數(shù)器變量i的取值是由range()函數(shù)生成的要遍歷的數(shù)字序列。range()函數(shù)的具體語法:range(start,stop[,step])生成一個從start開始到stop(不包括該值)結(jié)束,步長為step的整數(shù)序列。其中,start是可選的,默認(rèn)為0;step也是可選的,默認(rèn)為1。【例題】range()函數(shù)的應(yīng)用實例range(1,5)#代表從1到5(不包含5)[1,2,3,4]range(1,5,2)#代表從1到5(不包含5),間隔2[1,3]range(5)#代表從0到5(不包含5)[0,1,2,3,4]【例題】for語句的例子使用for語句求1+2+…+9+10。sum=0foriinrange(1,11):print(i)sum+=iprint(sum)for語句的擴(kuò)展模式for<循環(huán)變量>in<遍歷結(jié)構(gòu)>:<語句塊1>else:<語句塊2>當(dāng)for循環(huán)正常執(zhí)行之后,程序會繼續(xù)執(zhí)行else語句中內(nèi)容。else語句只在循環(huán)正常執(zhí)行之后才執(zhí)行。因此,可以在<語句塊2>中放置判斷循環(huán)執(zhí)行情況的語句。【例題】for語句擴(kuò)展模式的例子forsin"BIT":print("循環(huán)進(jìn)行中:"+s)else:s="循環(huán)正常結(jié)束"print(s)執(zhí)行結(jié)果:循環(huán)進(jìn)行中:B循環(huán)進(jìn)行中:I循環(huán)進(jìn)行中:T循環(huán)正常結(jié)束循環(huán)中的else擴(kuò)展用法總結(jié)else中語句塊的執(zhí)行條件:循環(huán)正常遍歷了所有內(nèi)容或由于條件不成立而結(jié)束循環(huán)。循環(huán)嵌套在Python中,允許在一個循環(huán)體中嵌入另一個循環(huán)體,這稱為循環(huán)嵌套?!纠}】循環(huán)嵌套的例子foriinrange(4):print("外循環(huán)遍歷出來的值:",i)forninrange(i):print("內(nèi)循環(huán)遍歷出來的值:",n)

【例題】循環(huán)嵌套的例子執(zhí)行結(jié)果:外循環(huán)遍歷出來的值:0外循環(huán)遍歷出來的值:1內(nèi)循環(huán)遍歷出來的值:0外循環(huán)遍歷出來的值:2內(nèi)循環(huán)遍歷出來的值:0內(nèi)循環(huán)遍歷出來的值:1外循環(huán)遍歷出來的值:3內(nèi)循環(huán)遍歷出來的值:0內(nèi)循環(huán)遍歷出來的值:1內(nèi)循環(huán)遍歷出來的值:23.2.4跳轉(zhuǎn)語句在Python中,跳轉(zhuǎn)語句是能夠改變程序正常執(zhí)行順序的語句。它們允許程序在某些條件下跳過某些代碼塊,或者重復(fù)執(zhí)行某些代碼塊,從而實現(xiàn)更復(fù)雜的邏輯控制。1.continue語句在循環(huán)體中使用continue語句可以跳過本次循環(huán)后面的代碼,重新開始下一次循環(huán)?!纠}】計算1~100之間的偶數(shù)之和計算1~100之間偶數(shù)之和。sum=0foriinrange(1,101):ifi%2==1:continuesum+=iprint(sum)2.break語句在循環(huán)體中使用break語句可以跳出循環(huán)體?!纠}】break語句的例子將【PPT-27例題(使用while語句求1+2+…+9+10)】修改為使用break語句跳出循環(huán)體。i=1sum=0whileTrue:ifi==11:breaksum+=ii+=1print(sum)3.3異常處理語句3.3.1異常處理語句3.3.2異常處理總結(jié)3.3.1異常處理語句程序在運行過程中可能會出現(xiàn)異常情況,使用異常處理語句可以捕獲到異常情況,并進(jìn)行處理,從而避免程序異常退出。Python的異常處理語句為try-except異常處理

12num=eval(input("請輸入一個整數(shù):"))print(num**2)

觀察下面這段小程序:當(dāng)用戶輸入的不是數(shù)字呢?

>>>

請輸入一個整數(shù):10010000>>>

請輸入一個整數(shù):NOTraceback(mostrecentcalllast):File"D:/PythonPL/echoInt.py",line1,in<module>

num=eval(input("請輸入一個整數(shù):"))File"<string>",line1,in<module>NameError:name'No'isnotdefined異常處理Python解釋器返回了異常信息,同時程序退出。try-except語句Python異常信息中最重要的部分是異常類型,它表明了發(fā)生異常的原因,也是程序處理異常的依據(jù)。Python使用try-except語句實現(xiàn)異常處理,基本的語法格式如下:try: <語句塊1>except<異常類型>: <語句塊2>try-except語句

try:

num=eval(input("請輸入一個整數(shù):"))print(num**2)exceptNameError:print("輸入錯誤,請輸入一個整數(shù)!")

該程序執(zhí)行效果如下:>>>

請輸入一個整數(shù):NO輸入錯誤,請輸入一個整數(shù)!try-except語句try-except語句可以支持多個except語句,語法格式如下:try: <語句塊1>except<異常類型1>: <語句塊2>…except<異常類型N>: <語句塊N+1>except: <語句塊N+2>try-except語句最后一個except語句沒有指定任何類型,表示它對應(yīng)的語句塊可以處理所有其他異常。這個過程與if-elif-else語句類似,是分支結(jié)構(gòu)的一種表達(dá)方式。

12345678try:alp="ABCDEFGHIJKLMNOPQRSTUVWXYZ"

idx=eval(input("請輸入一個整數(shù):"))print(alp[idx])exceptNameError:print("輸入錯誤,請輸入一個整數(shù)!")except:print("其他錯誤")

try-except語句該程序?qū)⒂脩糨斎氲臄?shù)字作為索引從字符串a(chǎn)lp中返回一個字符,當(dāng)用戶輸入非整數(shù)字符時,exceptNameError異常被捕獲到,提示用戶輸入類型錯誤。當(dāng)用戶輸入數(shù)字不在0到25之間時,異常被except捕獲,程序打印其他錯誤信息,執(zhí)行過程和結(jié)果如下:>>>

請輸入一個整數(shù):NO輸入錯誤,請輸入一個整數(shù)!>>>

請輸入一個整數(shù):100其他錯誤異常處理類型Python中常見的異常處理類型:AttributeError:屬性錯誤,對象引用和賦值失敗時會引發(fā)屬性錯誤。NameError:試圖訪問的變量名不存在。SyntaxError:語法錯誤,代碼形式錯誤。Exception:所有異常的基類,因為所有Python異常類都是基類。Exception的其中一員,異常都是從基類Exception繼承的,并且都在exceptions模塊中定義。IOError:一般常見于打開不存在文件時會引發(fā)IOError錯誤,也可以解理為輸出輸入錯誤。KeyError:使用了映射中不存在的關(guān)鍵字(鍵)時引發(fā)的關(guān)鍵字錯誤。IndexError:索引錯誤,使用的索引不存在,常索引超出序列范圍。TypeError:類型錯誤,內(nèi)建操作或是函數(shù)應(yīng)用了錯誤類型的對象時會引發(fā)類型錯誤。ZeroDivisonError:除數(shù)為0,在用除法操作時,第二個參數(shù)為0時引發(fā)了該錯誤。ValueError:值錯誤,傳給對象的參數(shù)類型不正確,例如給int()函數(shù)傳入了字符串?dāng)?shù)據(jù)類型的參數(shù)。try-except-else-finally語句除了try和except保留字外,異常語句還可以與else和finally保留字配合使用,語法格式如下:try: <語句塊1>except<異常類型1>: <語句塊2>else: <語句塊3>finally: <語句塊4>

try-except-else-finally語句此處的else語句與for循環(huán)和while循環(huán)中的else一樣,當(dāng)try中的語句塊1正常執(zhí)行結(jié)束且沒有發(fā)生異常時,else中的語句塊3執(zhí)行,可以看作是對try語句塊正常執(zhí)行后的一種追加處理。finally語句塊則不同,無論try中的語句塊1是否發(fā)生異常,語句塊4都會執(zhí)行,可以將程序執(zhí)行語句塊1的一些收尾工作放在這里。try-except-else-finally語句try-except-else-finally語句采用else和finally修改代碼

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論