Python
程式設計
Outline
u
例外處理
u
輸入輸出
例外處理
u
⼤大部分執⾏行中的錯誤, Python 直譯器 (interpreter)
會以 發起例外 (exception) 的⽅方式來中斷程式的執
⾏行。實際上, 很多情況下我們需要⾃自⾏行控制可能會
產⽣生例外的程式碼, 因為例外並不全然是程式的邏
輯錯誤,例如程式中打算開 啟檔案,然⽽而實際檔名
並不存在,這種情況下,我們需要 的是例外發⽣生後
的處理動作,⽽而⾮非中⽌止程式的執⾏行。
u
凡是可能會產⽣生例外的程式碼, Python 利⽤用
try-except 陳述 (try-try-except statement) 讓程式設計
師⾃自⾏行處理例外。 try-except 為關鍵字 (keyword)
之⼀一,專⾨門⽤用來例外處理 (exception handling) 的。
為什麼需要例外處理
u 範例 EX07_01.py u ZeroDivisionError u NameError u IndexError u ...例外捕捉 1/2
u 例外的捕捉可以使用try/except區塊
u 在try suite中的程式碼會被Python嘗試執行, 一旦產生例外,
會交由except suite中的程式碼來處理
try
:
try suite
except
:
例外捕捉 2/2
• 以下是例外捕捉的範例
:
此處發生例外 此運算未被執行
更多的控制敘述
u try…except區塊還支援else和finally敘述句以提供更有彈性的控制
u 若try區塊中並未引發任何例外, 則else區塊則會在try區塊執行完
後被 執行, 反之則不執行 u finally區塊不論例外發生與否, 捕捉與否, 總是會在最後被執行
try
:
try suite
except
:
except suite
else
:
else suite
finally
:
finally suite
引發例外
u 使用raise 敘述句可引發例外 u 引發例外時所帶有的參數(args)會在例外被印出時同 時被輸出 例外被引發 被捕捉 執行期錯誤raise
例 外 (args)
給定例外名稱自定義例外
• 在
python中一切皆物件, 例外也不例外
• 每個發生的例外都是物件, 而同一類型的例外屬於同一個
類別
• 自定義例外的方法其實就是定義一個新的例外類別
• 簡單的例外定義可以藉由下述的類別定義
class
例 外 名 稱 (
Exception
): pass
繼承了Exception 參考範例 EX07_02.py
基本輸入輸出
u 如果要取得使用者的輸入,可以使用sys.argv,使用者輸入
的命令列引數,會收集為字串陣列並給sys.argv參考,索引 0是啟動的模組名稱,之後則陸續是使用者所 輸入的引數。 例如:
input()
在程式執⾏行的過程中,可以使⽤用input()函式取得使⽤用
者的輸⼊入,input()可以指定提⽰示⽂文字,使⽤用者輸⼊入的
⽂文字則以字串傳回。例如:
name = input('請輸⼊入你的名稱:')
print('歡迎 ', name)
print()
print(value, ..., sep=' ', end='\n', file=sys.stdout)
可以看到,除了指定值輸出之外,還可以使⽤用sep指
定每個輸出值之間的分隔字元,預設值為⼀一個空⽩白,
可以使⽤用end指定輸出後最後⼀一個字元,預設值是'\n'
輸出至檔案
預設的輸出是系統標準輸出,可以使⽤用file指定⾄至其
它的輸出。例如以下會將指定的值輸出⾄至data.txt:
open()函式
u 將資料寫入檔案或從檔案讀出,可以使用open()函式:
u open(file,mode="r",buffering=None,encoding=None,
讀取檔案
u read() u ⼀一次讀取所有的檔案內容,在不使⽤用檔案時,可以使⽤用 close()將檔案關閉以節省資源 u EX07_04.py u readline() u ⼀一次讀取⼀一⾏行內容 u EX07_05.py u readlines() u ⽤用⼀一個串列收集讀取的每⼀一⾏行 u EX07_06.py寫資料至檔案
u 使用open()函式時,指定模式為‘w’或’a’,並使用write()
方法進行資料寫入。
u 傳入參數需為字串型態