2026 資訊之芽 Python 語法班 小作業

File I/O & Error Handling

重要資訊

Deadline: 2026/05/04 00:00

作業程式連結:

作業繳交表單:

簡介

在本次作業中,我們會練習:

  1. 簡易 command line 使用
  2. 閱讀、理解他人撰寫好的程式碼
  3. 更深入了解檔案、檔案系統的概念,與 Python File I/O
  4. 實際撰寫 Error Handling 的程式

完成作業後,你需要透過表單繳交:

  1. 完成 Error Handling 的程式 .py 檔

預計需要 1~2 小時,理解題目設定、模板程式碼。
預計需要 1 小時,加入 Error Handling 的程式,並完成所有的繳交工作。

教學

回顧

假設你的當前工作目錄是 C:\Users\yourname 而你將程式碼 main.py 存放在 C:\Users\yourname\Downloads\homework 資料夾下。


你需要:

cd Downloads\homework
python main.py

或者是:

python C:\Users\yourname\main.py

才能正確執行。

帶參數執行程式

在 CLI 執行程式時,可以在 CLI 附帶參數,在程式中讀到參數。


舉例而言,如果透過以下 command 執行:

python main.py haha 123

Python 程式中可以用:

import sys

print(sys.argv[0]) # main.py
print(sys.argv[1]) # "haha"
print(sys.argv[2]) # "123"

來使用這些參數。

任務、執行、測試

環境準備

請分別從這幾個連結獲取作業程式碼。

其中,本次作業的主要修改目標是 convert.py。你需要在這個檔案中加入 Error Handling 的程式,使程式能正確處理各種錯誤輸入。

grade.py 是用來評量你的程式是否正確運作的程式,你可以用它來驗證你的程式是否符合要求。你不需要修改它。

動機

真人真事改編


你是資訊之芽 Python 語法班課程的小助手,需要幫忙批改 200 位學生的程式設計作業。
收到大家的程式作業後,你使用前一任小助手留下的自動化腳本為學生進行評分。腳本將學生的姓名、成績、繳交時間輸出成一筆一筆紀錄,到一個文字日誌檔內,格式如下:

name=Alice, score=80, timestamp=2026-04-10 13:45
name=Bob, score=35, timestamp=2026-03-31 00:32
...

在取得這份日誌檔案後,你想要進一步對這些資料進行加工。
你希望用程式自動化計算學生的遲交扣分,並且將最終結果匯出成表格,方便老師閱讀。


在與 Gemini 大戰 300 回合後,你得到了另你滿意的 Python 程式 convert.py。


你開心的向其他小助手炫耀,其他小助手便友善的說:「既然你有自動化腳本,那我們的日誌檔都交給你處理吧!」
而你實際將 convert.py 用來處理其他小助手的日誌檔後,頓感大事不妙。因為某些特殊的原因,其他小助手的日誌檔:

你在執行 convert.py 幫忙處理資料時,被迫需要一直停下來人工檢查發生了什麼錯誤,相當困擾。
針對這樣的情況,你想要改善 convert.py,讓它在面對各種非預期的情況時,都能妥善地完成任務。

任務

1. 閱讀 convert.py

請閱讀 convert.py,了解這份 python 程式是如何運作的。

2. 加入 Error Handling

在假設 .read()、.write() 系列的程式不會出錯的情況下,幫 convert.py 加上 Error Handling 的程式。


你的 convert.py 必須至少處理以下幾種類型的錯誤:

a. 檔案相關錯誤

處理方式:

b. deadline 錯誤

處理方式:

c. 欄位為空

處理方式 (優先級由前往後):

d. score 錯誤

處理方式:

e. timestamp 錯誤

處理方式:

f. 整行格式錯誤

處理方式:

執行

在 CLI 執行:

python convert.py input.txt output.txt "2026-04-04 12:00"

參數說明:

測試

做完後可以使用測試程式檢查你的實作,通過即可獲得滿分:

python grade.py convert.py

如果你的程式實做正確,會看到兩個 PASS。

繳交

請將修改好的 convert.py 透過這個 表單 進行繳交。