江勇




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