第5章復習與常見錯誤分析_第1頁
第5章復習與常見錯誤分析_第2頁
第5章復習與常見錯誤分析_第3頁
第5章復習與常見錯誤分析_第4頁
第5章復習與常見錯誤分析_第5頁
免費預覽已結束,剩余24頁可下載查看

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第五章數據的輸入與輸出---復習與常見錯誤分析標準輸入函數input()語句的基本格式為:input('提示文本串')返回的是字符串類型,如需要其他類型需要進行類型轉換>>>a=float(input('a='))a=12.5>>>a12.5Input的例子>>>hour,minute,second=input('請輸入時間(h:m:s):').split(':')請輸入時間(h:m:s):7:30:25>>>hour,minute,second('7','30','25')>>>hour=int(hour)>>>minute=int(minute)>>>second=int(second)>>>hour,minute,second(7,30,25)標準輸出函數print()語句的基本格式為:print(value,...,sep='',end='\n',file=sys.stdout,flush=False)參數value表示輸出對象,可以是變量、常數、字符串等。value后的...表示可以列出多個輸出對象,以分號間隔。參數sep表示多個輸出對象顯示時的分隔符號,默認值為空格參數end表示print語句的結束符號,默認值為換行符,也就是說print默認輸出后換行。參數file設置輸出文件,默認為標準輸出即顯示器。參數flush設置緩沖,默認為false。Print的例子輸出三個整數>>>x,y,z=10,20,30>>>print(x,y,z)102030轉換格式輸出日期>>>y,m,d='2014-1-26'.split('-')>>>y,m,d('2014','1','26')>>>print(y,m,d,sep='/')2014/1/26Print的例子分別打印各個參數,默認空格區(qū)分>>>x=100>>>print('x+20=',

x+20)x+20=120將參數構造成一個輸出字符串后輸出>>>print('x+20='+str(x+20))x+20=120使用Print語句寫文件f=open("abc.txt",'w')print("Hello\nWorld!",file=f)f.close()使用格式控制串來輸出'格式控制串'%(值序列)格式控制串包括普通字符和’%’開始的格式控制符號%f–浮點數%d–十進制整數%s–字符串m.n–寬度m位(不足填空格),小數點后保留n位+/-–右對齊/左對齊求圓面積,使用格式控制串輸出實現代碼:importmathradium=float(input("請輸入一個圓的:"))area=math.pi*math.pow(radium,2)print('半徑為%7.2f的圓的面積等于%7.2f'%(radium,area))運行示例:>>>請輸入一個圓的:12.5半徑為12.50的圓的面積等于490.87>>>文件操作文件操作三步曲打開文件讀/寫文件關閉文件打開文件函數格式為:f=open(file,mode)第一個參數file表示要打開文件的文件名(或文件路徑名)第二個參數表示打開文件的方式,默認為'r'表示只讀。'w'或'x'表示打開文件用于寫,使用w,如對應文件名的文件已存在,則進行覆蓋;使用x時文件存在則報錯。'a'表示以寫方式打開,寫入內容追加在文件的末尾;'+'表示以修改方式打開,支持對同一文件即寫又讀't'或'b'表示以文本或二進制方式打開,默認為文本讀文件s=f.read()讀取文件所有內容到字符串s。s=f.readline()讀取文件一行的內容到字符串s。L=f.readlines()讀取文件f中所有的行到列表L,其中每一行成為列表中的一個元素,如[line1,line2,...lineN]。讀一次后,文件讀寫指針(定位指針)移動到讀出內容之后,要改變指針位置,可用seek()函數。seek(0)指針回到頭部,seek(N)指針位于N個字符之后。寫文件f.write(string)將參數對應的字符串寫入文件f不包含回車如:>>>f.write('hello\n')f.writelines(List)將參數列表中各個元素對應的字符串寫入文件fL1=["Hello\n","World"]f=open("bbb.txt",'w')f.writelines(L1)f.close()關閉文件/快速列表訪問方式關閉文件f.close()快速列表訪問方式<列表>=list(open(filename,mode))這種方式直接打開并讀入文件的內容到列表中,列表中的每一個元素對應文件中的一行,類型為字符串。(省去了打開和關閉文件的操作)例:L1=list(open("bbb.txt"))print(L1)>>>['Hello\n','World']異常處理異常的概念異常,又稱例外,是程序運行時所發(fā)生的各種輕微錯誤或異常情況當發(fā)生異常時,如果不進行處理,系統(tǒng)會使用默認異常處理器,終止程序的運行。程序員可以通過自己編寫有針對性的代碼來對它進行處理,以讓程序繼續(xù)運行下去,這稱為異常處理。異常處理異常處理語句包括:try…except…else…finallytry:

//被監(jiān)視的代碼塊except異常類型1:

//異常類型1的處理代碼except異常類型2: //異常類型2的處理代碼else://未出現異常時的處理代碼finally: //該代碼塊的內容始終會被執(zhí)行try塊用來監(jiān)視這段代碼執(zhí)行過程中是否發(fā)生異常,若發(fā)生則產生異常對象并拋出。except用于捕獲異常并處理它。異常處理的例子#Filename:except-input3whileTrue:

try:s=input('輸入一些東西-->')

exceptEOFError:print('你為何在此輸入Ctrl+Z???請重新輸入!')

else:breakprint('OK!')print('你輸入的是:'+s)無異常,則退出重新獲得數據的循環(huán)編程的幾個原則:縮進對齊,且盡量使用TAB鍵來縮進編程越簡潔越好(簡單為美)不使用不必要的循環(huán)循環(huán)體重復三次以下不建議使用循環(huán)除用引號包括的提示信息外,程序中所有變量、運算符、分隔符、引號、逗號、各類括號等均在半角英文狀態(tài)下輸入所有循環(huán)必須有出口即在滿足一定條件下能夠終止循環(huán)。避免死循環(huán)的發(fā)生。不確定或程序找不到錯誤時可插入調試代碼(典型的如使用print語句打印某些變量或項的值)程序分析例1:在當前目錄下有一個文件名為temp.txt的文件,存放著上海從2014年3月10日(周一)到3月16日(周日)間一周的最高和最低氣溫(單位為攝氏度)。其中,第一行為最高氣溫,第二行為最低氣溫。編程,找出這一周中第幾天最熱(按最高氣溫計算)?最高多少度?這一周中第幾天最冷(按最低氣溫計算)?最冷多少度?f=open("temp.txt")a=f.readline()b=a.strip()c=b.split(",")d=f.readline()e=d.strip()g=e.split(",")h=int(c)k=int(g)x=int(max(k))y=int(min(h))程序分析例1(續(xù)):foriinrange(1,8):ifh(i)>x:x=h(i)continueelse:print("最高溫度是",x,"星期",i)foriinrange(1,8):ify>k(i):y=k(i)continueelse:print("最低溫度是",y,"星期",i)f=open("temp.txt")a=f.readline()b=a.strip()c=b.split(",")d=f.readline()e=d.strip()g=e.split(",")#h=int(c)#k=int(g)foriinrange(len(c)):c[i]=int(c[i])foriinrange(len(g)):g[i]=int(g[i])#x=int(max(c))#y=int(min(g))x=c[0]y=g[0]foriinrange(1,7):ifc[i]>x:x=c[i]print("最高溫度是",x,"星期",c.index(x)+1)foriinrange(1,7):ify>g[i]:y=g[i]print("最低溫度是",y,"星期",g.index(y)+1)修正后的程序程序分析例2:當前目錄下有一個文件名為score1.txt的文本文件,存放著某班學生的計算機課成績,共有學號、平時成績、期末成績三列。請根據平時成績占40%,期末成績占60%的比例計算總評成績(取整數),并分學號、總評成績兩列寫入另一文件score2.txt。f=list(open("score1.txt"))Ls=[]foriinf:Ls.append(i.split(','))foriinrange(0,len(Ls)):forjinrange(2,4):Ls[i][j]=int(Ls[i][j])Ld=[]forainLs:d=[]foriinrange(0,1):d.append(a[i])y=int(a[2]*0.4+a[3]*0.6)d.append(y)Ld.append(d)f.write(Ld)f.close()原程序存在的問題:f=list(open(“score1.txt”))語句得到的列表f形似:['學號平時成績期末成績\n','101016111017569\n',……]應先去掉第一項,如delf[0]另外,i.split(‘,’)參數不正確,應為空,即以空白字符分隔分隔后的列表類似:[['10101611101','75','69'],['10101611102','52','45'],….]將列表中的成績部分轉整數,列表下標范圍有誤。寫文件前要先用寫模式打開文件引用列表中i項中的平時和期末成績應使用:Ls[i][1]和Ls[i][1]

f=list(open("score1.txt"))delf[0]Ls=[]foriinf:Ls.append(i.split())foriinrange(0,len(Ls)):forjinrange(1,3):Ls[i][j]=int(Ls[i][j])f2=open("score2.txt",'w')f2.write("學號總評成績\n");foriinrange(len(Ls)):f2.write(Ls[i][0]+"")f_score=int(Ls[i][1]*0.4+Ls[i][2]*0.6)f2.write(str(f_score)+"\n")f2.close()修改后的代碼:另一實現代碼f=open("score1.txt")a=f.readline()line=(f.readline()).strip()f2=open("score2.txt",'w')f2.write("學號平均成績\n");while(len(line)!=0):L1=line.split()f2.write(L1[0]+"")f_score=int(int(L1[1])*0.4+int(L1[2])*0.6)f2.write(str(f_score)+"\n")line=(f.readline()).strip()f.close()f2.close()例3:編寫一除法程序,讓用戶輸入被除數和除數(均為浮點數,輸入前給出提示),如果用戶輸入的不是浮點數,或者除數為0,則利用異常處理報錯(如提示“必須輸入浮點數”或“除數不能為0”),程序結束。輸入正確則輸出除法的結果(結果請保留兩位小數)。try:a=float(input("輸入被除數"))exceptValueError:print("必須輸入浮點數")try:b=float(input("輸入除數"))exceptValueError:print("必須輸入浮點數")exceptZeroDivisionError:print("除數不能為零")print("%f除以%f的商是:%.2f"%(a,b,a/b))修改后的代碼try:a=float(input('被除數:'))b=float(input('除數:'))print("%f除以%f的商是:%.2f"%(a,b,a/

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論