江勇




摘要:本文介紹了Python作業自評系統的對拍運行和代碼檢測等模塊的設計思路和核心代碼,并就教學應用提出重要提示:程序教學的課堂重心仍是知識內容的教學設計和程序思想的啟發,契合學習內容的課堂案例和激情揚趣的項目作業才能相輔相成,借助或開發一些必要的評測工具能有效地提升學生學習的積極性和主動性。
關鍵詞:Python程序教學;作業評價
中圖分類號:G434 ?文獻標識碼:A ?論文編號:1674-2117(2022)13-0076-03
隨著Python被作為高中信息技術“數據與計算”模塊的首選教學語言,指導學生學習Python基礎語法、編寫調試程序代碼、領會計算機編程思想成為高中信息技術課程中的一個重要內容。如何在課堂教學中及時發現學生的知識缺漏和指導學生完成Python作業,順利體驗編程過程和發展計算思維,是廣大信息技術教師一直思考的問題。筆者在教學實踐中,嘗試開發了一套Python作業的自評檢測系統,能對學生作業進行自我評測,并針對具體錯誤即時給出修改建議,幫助學生及時查漏補缺,完成程序代碼的編寫運行。本自評系統經一個學期的教學使用,取得了很好的教學效果。下面,筆者詳細談談本系統的開發思想和主要過程,以及在教學中的實踐應用。
● 系統的主要功能
①采用對拍模式,使用測試數據運行學生作業代碼和教師標準程序,對比輸出結果,檢測學生作業的程序功能。如果輸出結果一致,則在作業代碼填空項分值的基礎上獎勵20分。
②若輸出有錯,則檢測作業代碼,反饋代碼中的語句或語法錯誤,并提供修改建議。
③將學生作業的評價得分和作答情況上傳,記錄到教師機服務器的數據庫中,供教師教學參考。
④基于學生作業的作答情況,給出相應的激勵性評價。
⑤提供針對每一份作業完成情況的查詢反饋子系統,教師和學生都可以查看,不僅對學生起到督促作用,還可為教師提供教學反饋,便于安排下一節課的針對性講解。
● 程序的主要設計思想
每一份項目作業都是教師事先準備好的數據包,主要含有如圖1所示的文件。以一份“判斷成績是否合格”的分支結構程序作業為例,主要包含教師的標準程序“成績合格.exe”,學生需完成的作業半成品“成績合格.py”、對拍用的測試數據“測試數據.txt”、由代碼填空項“標準答案.txt”加密生成的“測評參數.pay”,以及評分程序“測評上傳.py”。
學生學習了本節課主要知識點后,自主編輯教師提供的半成品或全空的Python作業,保存之后調試運行。無論成功與否,都可運行本文件夾下的“測評上傳.py”程序,本測評軟件會自動調用測試數據,經教師程序“成績合格.exe”和學生代碼“成績合格.py”運行輸出,比對輸出結果是否一致,判斷程序是否通過,給出運行通過并獎勵加分的激勵評價或提供錯誤代碼的修改建議,供學生參考,進而幫助學生理解本節教學的主體內容和語句語法知識。
● 核心代碼的簡要說明
1.Python對拍模塊
因為os.system()調用執行Python程序會閃現cmd黑窗口,或不能傳遞測試數據,故筆者探索使用subprocess.run()方法無痕跡地調用執行Python程序。核心代碼如圖2所示。
2.代碼檢測模塊
由“測評參數.pay”解密還原為“標準答案”讀入到列表data中,因為代碼的書寫形式可能不唯一,故“標準答案.txt”中每空的可能代碼用“#”隔開,羅列在一行中。判斷時用邏輯運算符“or”組裝查詢條件,如果在學生作業代碼全文中,查詢到任一答案,則認為檢測項正確,否則提供修改建議。核心代碼如圖3所示。
3.作答數據上傳模塊
采用“網上鄰居”共享文件夾讀寫的簡化方式,將學生作答數據上傳寫入教師機的access數據庫中。這里用了一個小技巧,在設置共享文件夾名稱時,多輸入一個“$”,可具有部分隱藏效果。核心代碼如下頁圖4所示。
4.作業情況查詢反饋模塊
利用aspx動態網頁等查詢access數據庫,因為涉及網站的開發和設置等,步驟較多,這里就不一一贅述了,讀者可自行研究。其實,教師此時完全可以在access中使用“篩選”功能查閱每班的每份作業了。
● 課堂教學中的實踐應用
本系統為Python作業學生自評檢測系統,僅具有檢查輔導激勵學生作業實踐功能。教師在使用中,仍需將教學重心放在教學內容設計、知識流程講授、程序思想啟發上。優秀的課堂案例講解,結合激情揚趣的項目作業才能相輔相成,從而最大化地發揮課堂教學的價值。所以,針對本系統的使用,設計活潑有趣的課堂作業是另一個耗時更多、更能體現教師匠心的重要組成部分,優質的課堂作業設計才是本系統發揮良好指導檢測效果的關鍵。
教師基于課堂教學內容,選擇合適的作業主題后,先進行標準代碼的編寫調試,總結預估學生可能出現的問題或錯誤,基于本節教學的測試點,將重點測試部分留空待填,并以代碼注釋的方式標注明確的語句功能和要求,指導學生作答。將每空的填空項答案(含其他可能的主要書寫形式)分行編寫“標準答案.txt”,之后加密為“測評參數.pay”,用于向學生提供正確代碼提示。按需要分行編寫“測試數據.txt”,其中第一行數據為本作業項目的填空數,用于計算反饋學生程序對拍通過之后的計分和獎勵,為更好地激發學生積極調試代碼,保證程序正常運行,可以提高獎勵分數,誘導學生積極嘗試,使其達到對程序代碼和語法規則的真正理解和掌握。最后,教師將標準代碼編譯生成exe文件,隨項目下發給學生,用于對拍比對。
在程序初學階段,為降低學習難度,提高學生的學習成就感,教師可以更多地以作業半成品的方式提供項目作業,達到對核心語句的檢查練習效果。隨著學習進程的深入,教師要預留完整的一條或多條語句讓學生編寫,真正鍛煉學生的算法設計、代碼編寫、調試能力。因為對程序的效能檢測采用對拍的原理,所以學生作業代碼中的輸入輸出部分,教師需事先提供,保證輸入輸出的一致。如果作業內容是對輸入輸出語句的學習,則可以在“測評上傳.py”中稍加修改,放棄對拍部分的運行,直接執行代碼檢測部分。
● 結語
教學中的過程監測一直是學科教學中的薄弱環節,借助或開發一些能切實提高學生作業檢測和指導效能的工具,將使教學效果事半功倍。它不僅將教師從繁重的作業指導中解放出來,同時還能為不同層次的學生提供不同的成就體驗,讓他們學有余力的時候,不斷地發揮創造,學有不力的時候,有最基礎的輔導支持。學習的難度下降了,探索的熱情提升了,學習的興趣就激發了,主動學習就開始了。