2015年8月12日

python做試題轉檔到moodle

七月的時候,要幫梅子建立高中生物的moodle題庫,就把高中的題庫光碟拿來看看。雄哥有寫過一個Excel VBA程式用來把幾家出版社的國中小題庫轉成moodle可以用的格式,但是因為高中還有複選題什麼的,所以要直接拿雄哥的來用,看來不大行。

沒現成的,乾脆就自己寫,可是不知道用哪個程式語言來寫啊,想來想去乾脆用python,因為我完全沒用過,剛好邊寫邊學。

雖然沒用過,但是程式的邏輯反正都差不多,只要弄懂基本語法就可以。於是我根據我的各種需求改寫各種範例再進行組合成題庫轉檔Gift格式的Python程式。如果有人要拿去用,基本也要略懂python,這樣才能看懂這裡頭在幹嘛就是了。

我沒打算寫使用教學,但是還是要幫自己筆記一下進行過程,不然隔一陣子沒碰就會忘記當初的細節。

一開始我先把題庫裡的docx檔轉成txt檔(還得注意要轉成utf8),再利用python轉成Gift格式,最後再匯入moodle。算算高一和高二的題目加一加也快要四千題耶,還好做了轉檔程式,如果是自己一題一題建立,應該會老死才是。




自己寫的python轉檔程式有幾個特點:

  1. 把數個題庫txt檔,轉換合併成一個Gift格式,所以匯入時只要匯入一個檔案就行。
  2. 每個題目在moodle裡都自動進行分類了,分類依據是把原題目檔名當作章節名稱,另外再把單選和非選放在不同分類項下。
  3. 試題的「試題概念名稱」完整放入題幹和選項,這樣在moodle選題時,可以用搜尋關鍵字的方式,快速找到想要的題目。
  4. 轉檔沒有辦法匯入圖片,所以圖片題的「試題概念名稱」都會在前面加入[圖]的字樣,以便之後快速判別這些題目,以後再一個一個手動加入圖片。事後再把這些圖片題另建分類,也可以避免隨機出題去出到這些該有圖,但是還沒有放圖的題目。
  5. moodle沒有辦法依據期望值設定答對應該給幾分,答錯應該扣多少,所以複選題的部份,我會自動計算每個選項答對應該得多少百分比,例如只有三個選項,該選項答對就只得33.33333%,其他不該選擇的選項,選了都是扣100%。