天天看點

《Python語言程式設計》——1.8 程式設計錯誤

本節書摘來自華章計算機《python語言程式設計》一書中的第1章,第1.8節,作者:[美]梁勇(y. daniel liang) 更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視。

關鍵點:程式設計錯誤可以分為三類:文法錯誤、運作時錯誤和邏輯錯誤。

1.8.1 文法錯誤

你會遇到的大多數常見錯誤都是文法錯誤。就像任何一種程式設計語言一樣,python也有自己的文法,你需要遵從文法規則編寫代碼。如果你的程式違反了這些規則——例如:忘寫一個引号或者拼錯一個單詞——python将會報告文法錯誤。

文法錯誤來自代碼建構過程中的錯誤,例如:敲錯了一條語句,不正确的縮進,忽略某些必需的标點符号,或者使用了左括号而忘了右括号。這些錯誤通常很容易被檢測到,因為python會告訴你這些錯誤在哪裡以及是什麼原因造成了這些錯誤。例如:下面的print語句有一個文法錯誤:

《Python語言程式設計》——1.8 程式設計錯誤

https://yqfile.alicdn.com/9a09cc644e1432d7308f1db223fa4defcb02257d.png

" >

字元串“programming is fun”少了右引号。

提示:如果你不知道如何更正文法錯誤,将你的程式和課本中的相同例子一個字元一個字元地進行比較。在學習這門課程的前幾周裡,你可能要花很多時間找出文法錯誤。過一段時間之後,你将會熟悉python文法并且能夠快速地找出文法錯誤。

1.8.2 運作時錯誤

運作時錯誤是導緻程式意外終止的錯誤。在程式運作過程中,如果python解釋器檢測到一個不可能執行的操作,就會出現運作時錯誤。輸入錯誤是典型的運作時錯誤。當使用者輸入一個程式無法處理的值時,就會出現輸入錯誤。例如:如果程式希望讀取一個數字,而使用者輸入了一個文本字元串,這就導緻程式中出現資料類型錯誤。

另一個常見的運作時錯誤是被0除。當整數除法的除數為零時就會發生運作時錯誤。例如:下面語句中的表達式1/0就會導緻一個運作時錯誤。

《Python語言程式設計》——1.8 程式設計錯誤

1.8.3 邏輯錯誤

當程式不能實作它原來打算要完成的任務時就會導緻邏輯錯誤。發生這種類型的錯誤的原因有很多種。例如:假設你編寫程式清單1-4中的程式,這個程式将華氏溫度(35度)轉換成攝氏溫度。

程式清單1-4 showlogicerrors.py

《Python語言程式設計》——1.8 程式設計錯誤

你可以得到攝氏-12.55度,但這是錯的,它應該是1.66。為了擷取正确的結果,需要在表達式中使用5 / 9 (35 - 32)而不是5 / 9 35 - 32。也就是說,需要添加圓括号包覆(35 - 32),這樣,python會在做除法之前首先計算這個表達式。

在python中,文法錯誤事實上是被當作運作時錯誤來處理,因為程式執行時它們會被解釋器檢測出來。通常,文法錯誤和運作時錯誤都很容易找出并且易于更正,因為python給出提示資訊以便找出錯誤來自哪裡以及為什麼它們是錯的,而查找邏輯錯誤則非常具有挑戰性。

檢查點

1.32 三種程式錯誤是什麼?

1.33 如果忘記在字元串後面加右引号,将會産生什麼錯誤?

1.34 如果程式需要從檔案中讀取資料,但是這個檔案并不存在,那麼當你運作這個程式時就會導緻錯誤。這個錯誤是哪類錯誤?

1.35 假設你編寫一個程式計算一個矩形的周長,而你寫錯了程式導緻它計算成矩形的面積。這個錯誤是哪類錯誤?