




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第二版本章要點:3.1程序的流程3.2順序結(jié)構(gòu)3.3選擇結(jié)構(gòu)3.4循環(huán)結(jié)構(gòu)3.5錯誤和異常處理3.6綜合應(yīng)用:turtle模塊的復(fù)雜圖形繪制第3章程序流程控制3.1程序的流程輸入、處理和輸出(IPO)程序通過輸入接收待處理的數(shù)據(jù)(Input);然后執(zhí)行相應(yīng)的處理(Process);最后通過輸出(Output)返回處理的結(jié)果輸出結(jié)果輸出是程序輸出結(jié)果的方式。程序的輸出方式包括控制臺輸出、圖形輸出、文件輸出、網(wǎng)絡(luò)輸出等【例3.1】計算球體的表面積和體積的程序的IPO描述輸入(I):輸入r(球體的半徑)處理(P):計算球體的表面積s=4*math.pi*r*r計算球體的體積v=4*math.pi*r*r*r/3輸出(O):輸出s和v輸入數(shù)據(jù)輸入是一個程序的開始。程序要處理的數(shù)據(jù)有多種來源,形成了多種輸入方式,包括交互輸入、參數(shù)輸入、隨機(jī)數(shù)據(jù)輸入、文件輸入、網(wǎng)絡(luò)輸入等。處理數(shù)據(jù)處理是程序?qū)斎霐?shù)據(jù)進(jìn)行計算產(chǎn)生輸出結(jié)果的過程。計算問題的處理方法統(tǒng)稱為“算法”。程序處理輸入輸出01020304程序=算法+數(shù)據(jù)結(jié)構(gòu)算法是執(zhí)行特定任務(wù)的方法數(shù)據(jù)結(jié)構(gòu)是一種存儲數(shù)據(jù)的方式,有助于求解特定的問題描述算法:自然語言描述&偽代碼【例3.2】求解兩個整數(shù)最大公約數(shù)的算法的自然語言描述求解兩個整數(shù)的最大公約數(shù)(Greatest·Commom·Divisor,GCD)的一種算法是輾轉(zhuǎn)相除法,又稱歐幾里得算法。輾轉(zhuǎn)相除算法的自然語言描述如下。(1)對于已知的兩個正整數(shù)m和n,使得m>n。(2)m除以n得到余數(shù)r。(3)若r≠0,則令m←n,n←r,重復(fù)步驟(2),繼續(xù)m除以n得到新的余數(shù)r。若仍然r≠0,則重復(fù)此過程,直到r=0為止。最后的m就是最大公約數(shù)?!纠?.3】求解兩個整數(shù)最大公約數(shù)的輾轉(zhuǎn)相除算法的偽代碼描述//求解m和n的最大公約數(shù)。GCD(m,n)=GCD(n,m·Mod·n).GCD(m,n)····While·(n·!=·0)····remainder·=m·Mod·n··//·計算余數(shù)····m·=·n····n·=·remainder····End·While····Return·mEnd·Gcd【例3.4】求解兩個整數(shù)最大公約數(shù)的Python代碼實現(xiàn)(gcd.py)#求解m和n的最大公約數(shù)。GCD(m,n)=GCD(n,mModn)defgcd(m,n):if(m<n):m,n=n,mwhile(n!=0):remainder=m%n #計算余數(shù)m=nn=remainderreturnmif__name__=='__main__':print(24,36,"的最大公約數(shù)為:",gcd(24,36))程序運行結(jié)果如下24·36·的最大公約數(shù)為:12程序流程圖【例3.5】使用程序流程圖(如圖3-2所示)描述計算所輸入數(shù)據(jù)a的平方根的程序又稱為程序框圖,是描述程序運行具體步驟的圖形表示流程圖的基本元素主要包括以下幾種開始框和結(jié)束框()。表示程序的開始和結(jié)束輸入/輸出框()。表示輸入和輸出數(shù)據(jù)。處理框()。表示要執(zhí)行的流程或處理。判斷框()。表示條件判斷,根據(jù)判斷的結(jié)果執(zhí)行不同的分支。箭頭線()。表示程序或算法的走向。3.2順序結(jié)構(gòu)程序中語句執(zhí)行的基本順序按各語句出現(xiàn)位置的先后次序執(zhí)行importmatha=float(input("請輸入三角形的邊長a:"))b=float(input("請輸入三角形的邊長b:"))c=float(input("請輸入三角形的邊長c:"))h=(a+b+c)/2
#三角形周長的一半area=math.sqrt(h*(h-a)*(h-b)*(h-c));
#三角形面積print(str.format("三角形三邊分別為:a={0},b={1},c={2}",a,b,c))print(str.format("三角形的面積={0}",area))【例3.1】順序結(jié)構(gòu)示例(area.py):已知三角形三條邊的邊長(為簡單起見,假設(shè)這三條邊可以構(gòu)成三角形),求三角形的面積程序運行結(jié)果如下:請輸入三角形的邊長a:3請輸入三角形的邊長b:4請輸入三角形的邊長c:5三角形三邊分別為:a=3.0,b=4.0,c=5.0三角形的面積=6.03.3選擇結(jié)構(gòu)分支結(jié)構(gòu)的形式:單分支、雙分支和多分支條件表達(dá)式最簡單的條件表達(dá)式可以是一個常量或變量復(fù)雜的條件表達(dá)式包含關(guān)系比較運算符、測試運算符和邏輯運算符條件表達(dá)式的最后評價為bool值True(真)或者False(假)Python評價方法如下:如果條件表達(dá)式的結(jié)果為數(shù)值類型(0)、空字符串("")、空元組(())、空列表([])、空字典({}),則其bool值為False(假);否則其bool值為True(真)。例如,123、"abc"、(1,2)均為True關(guān)系和測試運算符與關(guān)系表達(dá)式關(guān)系運算符用于比較兩個對象的大小測試運算符用于測試兩個對象的關(guān)系包含關(guān)系和測試運算符的表達(dá)式稱之為關(guān)系表達(dá)式Python支持連寫多個比較運算符的關(guān)系表達(dá)式>>>2>1
#輸出:True>>>1<2<3#輸出:True>>>1>1.23#輸出:False>>>2>True#輸出:True>>>123>"abc"#報錯。TypeError:'>'notsupportedbetweeninstancesof'int'and'str'Python中的關(guān)系和測試運算符邏輯運算符和邏輯表達(dá)式>>>not0
#輸出:True>>>not'a'#輸出:False邏輯運算符除邏輯非(not)是一元運算符,其余均為二元運算符Python的任意表達(dá)式都可以評價為布爾邏輯值,故均可以參與邏輯運算單分支結(jié)構(gòu)a=int(input("請輸入第1個整數(shù):"))b=int(input("請輸入第2個整數(shù):"))print(str.format("輸入值:{0},{1}",a,b))if(a<b):#a和b交換t=aa=bb=tprint(str.format("降序值:{0},{1}",a,b))說明:如果a和b不滿足降序關(guān)系,本程序中還可以使用如下更簡單的語句實現(xiàn)數(shù)據(jù)交換:if(a<b):a,b=b,a當(dāng)條件表達(dá)式的值為真(True)時,執(zhí)行if后的語句(塊),否則不做任何操作,控制將轉(zhuǎn)到if語句的結(jié)束點【例3.7】單分支結(jié)構(gòu)示例(if_2desc.py):輸入兩個數(shù)a和b,比較兩者大小,使得a大于b程序運行結(jié)果如下:請輸入第1個整數(shù):23請輸入第2個整數(shù):34輸入值:23,34降序值:34,23if語句單分支結(jié)構(gòu)的語法形式:if(條件表達(dá)式):····語句/語句塊雙分支結(jié)構(gòu)當(dāng)條件表達(dá)式的值為真(True)時,執(zhí)行if后的語句(塊)1,否則執(zhí)行else后的語句(塊)2if(條件表達(dá)式):····語句/語句塊1else:····語句/語句塊2條件為真時的值··if··(條件表達(dá)式)··else·條件為假時的值條件表達(dá)式if語句雙分支結(jié)構(gòu)的語法形式【例3.8】計算分段函數(shù)if(x>=0):y=math.sin(x)+2*math.sqrt(x+math.exp(4))-math.pow(x+1,3)if(x<0):y=math.log(-5*x)-math.fabs(x*x-8*x)/(7*x)+math.e利用單分支結(jié)構(gòu)實現(xiàn)if(x>=0):y=math.sin(x)+2*math.sqrt(x+math.exp(4))-math.pow(x+1,3)else:y=math.log(-5*x)-math.fabs(x*x-8*x)/(7*x)+math.e利用雙分支結(jié)構(gòu)實現(xiàn)y=(math.sin(x)+2*math.sqrt(x+math.exp(4))-math.pow(x+1,3))if(x>=0)else\(math.log(-5*x)-math.fabs(x*x-8*x)/(7*x)+math.e)利用條件運算語句實現(xiàn)010203多分支結(jié)構(gòu)if語句多分支結(jié)構(gòu)的語法形式if(條件表達(dá)式1):····語句/語句塊1elif(條件表達(dá)式2):····語句/語句塊2···elif(條件表達(dá)式n):····語句/語句塊n[else:····語句/語句塊n+1]【例3.9】百分制轉(zhuǎn)換為五級制mark=int(input("請輸入分?jǐn)?shù):"))if(mark>=90):grade="優(yōu)"elif(mark>=80):grade="良"elif(mark>=70):grade="中"elif(mark>=60):grade="及格"else:grade="不及格"if(mark>=90):grade="優(yōu)"elif(mark>=80andmark<90):grade="良"elif(mark>=70andmark<80):grade="中"elif(mark>=60andmark<70):grade="及格"else:grade="不及格"if(mark>=60):grade="及格"elif(mark>=70):grade="中"elif(mark>=80):grade="良"elif(mark>=90):grade="優(yōu)"else:grade="不及格"將百分制分?jǐn)?shù)mark轉(zhuǎn)換為五級制(優(yōu)、良、中、及格、不及格)的評定等級grade成績等級=優(yōu)mark>=90良80≤mark<90中70≤mark<80及格60≤mark<70
不及格mark<60
方法一方法二方法三【例3.10】判斷坐標(biāo)點象限x=int(input("請輸入x坐標(biāo):"))y=int(input("請輸入y坐標(biāo):"))if(x==0andy==0):print("位于原點")elif(x==0):print("位于y軸")elif(y==0):print("位于x軸")elif(x>0andy>0):print("位于第一象限")elif(x<0andy>0):print("位于第二象限")elif(x<0andy<0):print("位于第三象限")else:print("位于第四象限")已知坐標(biāo)點(x,y),判斷其所在的象限(if_coordinate.py)程序運行結(jié)果如下:請輸入x坐標(biāo):1請輸入y坐標(biāo):2位于第一象限if語句的嵌套【例3.11】計算分段函數(shù):方法一(多分支結(jié)構(gòu)):if(x>0):y=1elif(x==0):y=0else:y=-1方法二(if語句嵌套結(jié)構(gòu)):if(x>=0):
if(x>0):y=1
else:y=0else:y=-1方法三:y=1if(x!=0):
if(x<0):y=-1else:y=0if語句典型示例代碼選擇結(jié)構(gòu)綜合舉例(1)a=int(input("請輸入整數(shù)a:"))b=int(input("請輸入整數(shù)b:"))c=int(input("請輸入整數(shù)c:"))if(a<b):a,b=b,a#使得a>bif(a<c):a,c=c,a#使得a>cif(b<c):b,c=c,b#使得b>cprint("排序結(jié)果(降序):",a,b,c)【例3.12】輸入三個數(shù),按從大到小的順序排
序(if_3desc.py)先a和b比較,使得a>b;然后a和c比較,使得a>c,此時a最大;最后b和c比較,使得b>c程序運行結(jié)果如下:請輸入整數(shù)a:3請輸入整數(shù)b:2請輸入整數(shù)c:5排序結(jié)果(降序):532選擇結(jié)構(gòu)綜合舉例(2)方法一。使用一個邏輯表達(dá)式包含所有的閏年條件:if((y%4==0andy%100!=0)ory%400==0):print("是閏年")else:print("不是閏年")方法二。使用嵌套的if語句:if(y%400==0):print("是閏年")else:if(y%4==0):if(y%100==0):print("不是閏年")else:print("是閏年")else:print("不是閏年")方法三。使用if-elif語句:if(y%400==0):print("是閏年")elif(y%4!=0):print("不是閏年")elif(y%100==0):print("不是閏年")else:print("是閏年")方法四。使用calendar模塊的isleap函數(shù)判斷閏年if(calendar.isleap(y)):print("是閏年")else:print("不是閏年")【例3.13】編程(leapyear.py)判斷某一年是否為閏年。判斷閏年的條件是:年份能被4整除但不能被100整除,或者能被400整除3.4循環(huán)結(jié)構(gòu)(1)>>>foriinrange(1,11):print(i,end='')
#輸出:12345678910>>>foriinrange(1,11,3):print(i,end='')#輸出:14710range對象range(start,stop[,step])range返回的數(shù)值系列從start開始,到stop結(jié)束(不包含stop)。如果指定了可選的步長step,則序列按步長step增長可迭代對象(iterable)系列(sequence),例如字符串(str)、列表(list)、元祖(tuple)、字典(dict)。文件對象。迭代器對象(iterator)。生成器函數(shù)(generartor)。for語句和while語句來實現(xiàn)循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)(2)sum_odd=0;sum_even=0foriinrange(1,101):ifi%2!=0:
#奇數(shù)sum_odd+=i
#奇數(shù)和else:
#偶數(shù)sum_even+=i
#偶數(shù)和print("1~100中所有奇數(shù)的和:",sum_odd)print("1~100中所有偶數(shù)的和:",sum_even)>>>foriin(1,2,3):print(i,i**2,i**3)for循環(huán)for·變量·in·對象集合:····循環(huán)體語句/語句塊1112483927【例3.14】利用for循環(huán)求1~100中所有奇數(shù)的和以及偶數(shù)的和(for_sum1_100.py)程序運行結(jié)果如下。1~100中所有奇數(shù)的和:25001~100中所有偶數(shù)的和:2550while循環(huán)(1)i=1;sum_all=0;sum_odd=0;sum_even=0while(i<=100):sum_all+=i
#所有數(shù)之和if(i%2==0):
#偶數(shù)sum_even+=i#偶數(shù)和else:
#奇數(shù)sum_odd+=i
#奇數(shù)和i+=1print("和=%d、奇數(shù)和=%d、偶數(shù)和=%d"%(sum_all,sum_odd,sum_even))【例3.15】利用while循環(huán)求
,以及1~100中所有奇數(shù)的和、偶數(shù)的和(while_sum.py)while·(條件表達(dá)式):····循環(huán)體語句/語句塊程序運行結(jié)果如下:和=5050、奇數(shù)和=2500、偶數(shù)和=2550while循環(huán)(2)【例3.16】用如下近似公式求自然對數(shù)的底數(shù)e的值,直到最后一項的絕對值小于10-6為止(while_e.py)i=1;e=1;t=1while(1/t>=pow(10,-6)):t*=ie+=1/ti+=1print("e=",e)程序運行結(jié)果如下e=2.7182818011463845循環(huán)的嵌套foriinrange(1,10):#外循環(huán)s=""forjinrange(1,10):#內(nèi)循環(huán)s+=str.format("{0:1}*{1:1}={2:<2}",i,j,i*j)在一個循環(huán)體內(nèi)又包含另一個完整的循環(huán)結(jié)構(gòu),稱為循環(huán)的嵌套【例3.17】利用嵌套循環(huán)打印九九乘法表(nest_for.py)循環(huán)的嵌套思考:請修改程序,分別打印如圖所示的2個九九乘法表:break語句(1)用于退出for、while循環(huán),即提前結(jié)束循環(huán),接著執(zhí)行循環(huán)語句的后繼語句當(dāng)多個for、while語句彼此嵌套時,break語句只應(yīng)用于最里層的語句,即break語句只能跳出最近的一層循環(huán)whileTrue:s=input('請輸入字符串(按Q或者q結(jié)束):')ifs.upper()=='Q':breakprint('字符串的長度為:',len(s))【例3.18】使用break語句終止循環(huán)(break.py)程序運行結(jié)果如下:請輸入字符串(按Q或者q結(jié)束):Hello,World!字符串的長度為:13請輸入字符串(按Q或者q結(jié)束):您好!字符串的長度為:3請輸入字符串(按Q或者q結(jié)束):qbreak語句(2)【例3.19】編程(prime1.py和prime2.py)判斷所輸入的任意一個正整數(shù)是否為素數(shù)方法一(利用for循環(huán)和break語句):importmathm=int(input("請輸入一個整數(shù)(>1):"))k=int(math.sqrt(m))foriinrange(2,k+2):ifm%i==0:break#可整除,肯定非素數(shù),結(jié)束循環(huán)ifi==k+1:print(m,"是素數(shù)!")else:print(m,"是合數(shù)!")方法二(利用while循環(huán)和bool變量):importmathm=int(input("請輸入一個整數(shù)(>1):"))k=int(math.sqrt(m))flag=True#先假設(shè)所輸整數(shù)為素數(shù)i=2while(i<=kandflag==True):if(m%i==0):flag=False#可整除,肯定非素數(shù),結(jié)束循環(huán)else:i+=1if(flag==True):print(m,"是素數(shù)!")else:print(m,"是合數(shù)!")continue語句(1)continue語句與break語句的區(qū)別continue語句僅結(jié)束本次循環(huán),并返回到循環(huán)的起始處,循環(huán)條件滿足的話就開始執(zhí)行下一次循環(huán);而break語句則是結(jié)束循環(huán),跳轉(zhuǎn)到循環(huán)的后繼語句執(zhí)行結(jié)束本次循環(huán),即跳過循環(huán)體內(nèi)自continue下面尚未執(zhí)行的語句,返回到循環(huán)的起始處,并根據(jù)循環(huán)條件判斷是否執(zhí)行下一次循環(huán)continue語句(2)【例3.20】使用continue語句跳過循環(huán)。要求輸入若干學(xué)生成績(按Q或q結(jié)束),如果成績<0,則重新輸入。統(tǒng)計學(xué)生人數(shù)和平均成績num=0;scores=0;#初始化學(xué)生人數(shù)和成績和whileTrue:s=input('請輸入學(xué)生成績(按Q或q結(jié)束):')ifs.upper()=='Q':breakiffloat(s)<0:#成績必須>=0continuenum+=1#統(tǒng)計學(xué)生人數(shù)scores+=float(s)#計算成績之和print('學(xué)生人數(shù)為:{0},平均成績?yōu)椋簕1}'.format(num,scores/num))程序運行結(jié)果如下:請輸入學(xué)生成績(按Q或者q結(jié)束):65請輸入學(xué)生成績(按Q或者q結(jié)束):87請輸入學(xué)生成績(按Q或者q結(jié)束):-40請輸入字符串(按Q或者q結(jié)束):q學(xué)生人數(shù)為:2,平均成績?yōu)椋?6.0continue語句(3)【例3.21】顯示100~200之間不能被3整除的數(shù)(continue_div3.py)。要求一行顯示10個數(shù)j=0#控制一行顯示的數(shù)值個數(shù)print('100~200之間不能被3整除的數(shù)為:')foriinrange(100,200+1):if(i%3==0):continue
#跳過能被3整除的數(shù)print(str.format("{0:<5}",i),end="")#每個數(shù)占5個位置,不足
后面加空格,并且不換行j+=1if(j%10==0):print()
#一行顯示10個數(shù)后換行死循環(huán)(無限循環(huán))如果while循環(huán)結(jié)構(gòu)中循環(huán)控制條件一直為真,則循環(huán)將無限繼續(xù),程序?qū)⒁恢边\行下去,從而形成死循環(huán)程序死循環(huán)時,會造成程序沒有任何響應(yīng);或者造成不斷輸出(例如控制臺輸出,文件寫入,打印輸出等)在程序的循環(huán)體中,插入調(diào)試輸出語句print,可以判斷程序是否為死循環(huán)。注意,有的程序算法十分復(fù)雜,可能需要運行很長時間,但并不是死循環(huán)可以使用快捷鍵<Ctrl>+<c>終止當(dāng)前程序的運行importmathwhileTrue:#循環(huán)條件一直為真num=float(input("請輸入一個正數(shù):"))print(str(num),"的平方根為:",math.sqrt(num))print("Goodbye!")【例3.22】死循環(huán)示例(infinite.py)else子句【例3.23】使用for語句的else子句(for_else.py)hobbies=""foriinrange(1,3+1):s=input('請輸入愛好之一(最多三個,按Q或q結(jié)束):')ifs.upper()=='Q':breakhobbies+=s+''else:print('您輸入了三個愛好。')print('您的愛好為:',hobbies)for·變量·in·對象集合:····循環(huán)體語句(塊)1else····語句(塊)2或者:while(條件表達(dá)式):····循環(huán)體語句(塊)1else····語句(塊)2else子句程序運行結(jié)果如下:>>>請輸入愛好之一(最多三個按Q或者q結(jié)束):旅游請輸入愛好之一(最多三個按Q或者q結(jié)束):音樂請輸入愛好之一(最多三個按Q或者q結(jié)束):運動您輸入了三個愛好您的愛好為:旅游音樂運動>>>請輸入愛好之一(最多三個按Q或者q結(jié)束):音樂請輸入愛好之一(最多三個按Q或者q結(jié)束):q您的愛好為:音樂循環(huán)語句典型示例代碼循環(huán)結(jié)構(gòu)綜合舉例(1)EPSILON=1e-15
#容差a=float(input("請輸入正實數(shù)a:"))#正實數(shù)at=a
#假設(shè)平方根t=awhileabs(t-a/t)>(EPSILON*t):t=(a/t+t)/2.0
#將t和a/t的平均值賦值給tprint(t)
#輸出a的平方根【例3.24】使用牛頓迭代法求解平方根計算一個正實數(shù)a的平方根,可以使用牛頓迭代法實現(xiàn):首先假設(shè)t=a,開始循環(huán)。如果t=a/t(或小于容差),則t等于a的平方根,循環(huán)結(jié)束并返回結(jié)果;否則,將t和a/t的平均值賦值給t,繼續(xù)循環(huán)請輸入正實數(shù)a:21.414213562373095循環(huán)結(jié)構(gòu)綜合舉例(2)f1=1;f2=1foriinrange(1,11):print(str.format("{0:6}{1:6}",f1,f2),end="")#每次輸出2個數(shù),
#每個數(shù)占6位,#空格分隔ifi%2==0:print()
#顯示4項后換行f1+=f2;f2+=f1【例3.25】顯示Fibonacci數(shù)列:1、1、2、3、5、8、……的前20項3.5錯誤和異常處理print("GoodLuck!"print("你今天的幸運隨機(jī)數(shù)是:",random.choice(range(10)))語法錯誤、運行時錯誤和邏輯錯誤語法錯誤是指其源代碼中拼寫語法錯誤,這些錯誤導(dǎo)致Python編譯器無法把Python源代碼轉(zhuǎn)換為字節(jié)碼,故也稱之為編譯錯誤【例3.26】Python語法錯誤示例(syntax_error.py)運行時錯誤程序中沒有導(dǎo)入相關(guān)的模塊(例如,importrandom)時,解釋器將在運行時拋出NameError錯誤信息程序中包括零除運算,解釋器將在運行時拋出ZeroDivisionError錯誤信息程序中試圖打開不存在的文件,解釋器將在運行時拋出FileNotFoundError錯誤信息運行時錯誤是在【例3.27】Python運行時錯誤(沒有導(dǎo)入相關(guān)的模塊)print("GoodLuck!“)print("你今天的幸運隨機(jī)數(shù)是:",random.choice(range(10)))【例3.28】Python運行時錯誤(零除錯誤)a=1b=0c=a/b邏輯錯誤邏輯錯誤是程序可以執(zhí)行(程序運行本身不報錯),但執(zhí)行結(jié)果不正確。對于邏輯錯誤,Python解釋器無能為力,需要讀者根據(jù)結(jié)果來調(diào)試判斷importmatha=1;b=2;c=1x1=-b+math.sqrt(b*b-4*a*c)/2*a#公式有誤,故結(jié)果不正確x2=-b-math.sqrt(b*b-4*a*c)/2*a#公式有誤,故結(jié)果不正確print(x1,x2)#輸出:-2.0-2.0【例3.29】Python邏輯錯誤示例異常處理通過try語句來定義代碼塊,以運行可能拋出異常的代碼;通過except語句,可以捕獲特定的異常并執(zhí)行相應(yīng)的處理;通過finally語句,可以保證即使產(chǎn)生異常(處理失?。?,也可以在事后清理資源等【例3.30】常見異常示例(1)(1)NameError。嘗試訪問一個未申明的變量。>>>noname
#報錯。NameError:name'noname'isnotdefined(2)SyntaxError。語法錯誤。>>>inta
#報錯。SyntaxError:invalidsyntax(3)AttributeError。訪問未知對象屬性。>>>a=1>>>a.show()
#報錯。AttributeError:'int'objecthasnoattribute'show'(4)TypeError。類型錯誤。>>>11+'abc'
#報錯。TypeError:unsupportedoperandtype(s)for+:'int'and'str'(5)ValueError。數(shù)值錯誤。>>>int('abc')
#報錯。ValueError:invalidliteralforint()withbase10:'abc'【例3.30】常見異常示例(2)(6)ZeroDivisionError。零除錯誤。>>>1/0
#報錯。ZeroDivisionError:divisionbyzero(7)IndexError。索引超出范圍。>>>a=[10,11,12]>>>a[3]
#報錯。IndexError:listindexoutofrange(8)KeyError。字典關(guān)鍵字不存在。>>>m={'1':'yes','2':'no'}>>>m['3']
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年教師師德師風(fēng)及職業(yè)素養(yǎng)考試題庫及答案
- 2025年保密觀在線培訓(xùn)單位考試題庫附帶答案
- 同業(yè)代付管理辦法
- 后勤維修管理辦法
- 員工舉報管理辦法
- 哈密草原管理辦法
- 商業(yè)市場管理辦法
- 商務(wù)用餐管理辦法
- 商場環(huán)境管理辦法
- 商砼園區(qū)管理辦法
- 2024年圖書管理員考試知識檢測試題及答案
- 《企業(yè)安全生產(chǎn)費用提取和使用管理辦法》知識培訓(xùn)
- 2025年進(jìn)山航天班考試題及答案
- 城市規(guī)劃違建舉報信范文
- 廣州高一英語必修一單詞表
- 學(xué)校2025-2026學(xué)年度第一學(xué)期工作計劃
- 干貨 - 高中歷史全套思維導(dǎo)圖100張
- 屋面光伏工程施工組織設(shè)計
- 2025年永誠財產(chǎn)保險股份有限公司招聘筆試參考題庫含答案解析
- 組織架構(gòu)重構(gòu):數(shù)智生態(tài)賦能主流媒體系統(tǒng)性變革的關(guān)鍵維度
- 農(nóng)民金融知識培訓(xùn)課件
評論
0/150
提交評論