結論:把考卷的純文字檔,整理成一張三欄的表格:題目、大類(語意/語法)、小類。這一步沒有難度,重點是看懂考卷的格式。
為什麼要整理成表格:後面 TODO2、TODO6 要按大類、小類分開算正確率,所以每一題都要先標好它屬於哪一類。
: capital-common-countries ← 冒號開頭:小類的「標題」,不是題目
Athens Greece Baghdad Iraq ← 一行一題,四個字,第四個是答案
Athens Greece Bangkok Thailand
...
: capital-world ← 下一個小類開始
...
整份檔案有 14 個冒號標題。前 5 個屬於語意(Semantic),後 9 個屬於語法(Syntactic)。模板的註解已經提示了這件事。
questions, categories, sub_categories = [], [], [] # 準備三個空籃子
n_headers = 0 # 數「目前讀到第幾個標題」
current_sub = None # 記住「目前在哪個小類」
for line in data: # 一行一行看
if line.startswith(": "): # 冒號開頭 → 這是標題
n_headers += 1 # 標題數 +1
current_sub = line # 記住新的小類名稱
continue # 標題不是題目,跳過
questions.append(line) # 題目放進籃子
categories.append("Semantic" if n_headers <= 5 else "Syntactic") # 第 1~5 個標題底下 → 語意
sub_categories.append(current_sub) # 小類就是最近一次看到的標題
⟦R:todo1_out⟧
我另外比對過:這張表跟老師在 GitHub 上提供的 questions-words.csv 一模一樣(19,544 列)。所以這一步做對了。