999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

一種批量檢查中小學Python程序作業文件的算法

2023-08-10 20:49:36歐建榮
中國信息技術教育 2023年15期

歐建榮

摘要:作者提出了一種批量檢查中小學Python程序作業文件的算法并將其編寫成應用軟件,在實現對Python程序作業文件高效檢查的同時,將作業自動評價分類。該方法檢查Python程序作業文件準確率高達99%,能夠對信息技術教師批量檢查Python作業文件起到一定的幫助作用。

關鍵詞:檢查作業;Python;mypy;最長公共子序列

中圖分類號:G434? 文獻標識碼:A? 論文編號:1674-2117(2023)15-0073-04

引言

學習Python程序設計能很好地鍛煉學生的邏輯能力和思維能力,但面對大量的Python程序作業文件,教師要花費大量的時間去批改。在批改Python程序作業時,教師要手動打開Python程序并運行,觀察是否有語法錯誤、運行結果是否正確,并與正確的程序對比等。如果教師能利用程序編譯Python程序文件以自動檢查程序是否有誤,并自動檢查程序與正確程序的相似度,然后對其進行評價分類,大致得出Python程序作業是屬于優秀作業還是亂做作業等,則能高效且及時地掌握學生的學習情況。因此,筆者結合Python程序的特點,提出了一種批量自動檢查Python程序文件的方法,旨在提高教師檢查作業的效率,并使學生得到及時反饋,提高教學效率。

技術簡介

1.mypy

mypy是Python靜態類型檢查工具,可以檢查Python程序文件在編寫內容和邏輯上是否有誤。mypy工具的安裝極為簡單,安裝命令為:python -m pip install mypy。筆者利用QProcess啟動外部程序的方式啟動mypy并從其標準輸出通道中讀取全部的輸出信息,通過輸出信息去判斷Python程序是否有誤。

2.最長公共子序列算法

給定一個長度為n的序列A和一個長度為m的序列B,求出一個最長的序列,使得該序列既是A的子序列,也是B的子序列,這就是最長公共子序列問題。最長公共子序列算法是一個非常實用且被廣泛應用的算法,適合于求解兩個文本之間的相似度。

筆者利用動態規劃的方法實現求解最長公共子序列,首先將原問題分割成一些子問題,用L[i][j]表示A的前i個元素、B的前j個元素的最長公共子序列的長度,這時的最長公共子序列的長度就是子問題。L[i][j]就是狀態,L[n,m]則是最終要達到的狀態,即為所求結果。其中Ai代表序列A的前i個字符組成的序列,Bj代表序列B的前j個字符組成的序列。A[x]代表序列A的第x個字符,i>0;B[y]代表序列B的第y個字符,j>0。L[i][j]代表序列Ai與序列Bj的最長公共子序列的長度,其公式如下頁圖1所示。

依據最長公共子序列,求序列A和序列B的相似度,其公式如下頁圖2所示。

實驗數據

筆者采用的實驗數據為所在學校八年級學生的2565份Python程序作業文件,這些文件均為學生課堂上即時完成的作業。

實驗過程

批量檢查Python作業系統界面設計如圖3所示,首先選擇需要檢查作業的班級,其次選擇該班級所對應的作業目錄和作業答案目錄,然后點擊“全部作業”按鈕,即可批量自動檢查作業,檢查的結果記錄顯示在中間列表處,其信息包括文件名、時間、大小、相似度,雙擊列表中的文件可以打開對應的文件。除了對Python作業進行評價分類外,該系統還具備按作業文件名稱或按作業文件內容去查找某個作業文件及語音播報等功能,方便教師對作業的查看。

批量檢查Python作業系統是在Qt Creator集成開發環境下開發實現,實驗中利用到Qt Creator的內部庫texttospeech,以實現語音播報功能。另外,實驗中需要借助非Qt Creator內部庫,因此需要編譯并加載第三方庫QXlsx,以實現將Excel表中的學生信息批量寫入數據庫中以及將系統檢查作業的結果自動記錄到Excel表中。批量檢查Python作業系統主要過程如下:

①將學生信息通過編程批量錄入SQLite數據庫;

②利用紅蜘蛛多媒體教學軟件收集學生的作業文件;

③使用迭代的方式獲取學生的作業文件;

④利用mypy對文件進行編譯,并結合最長公共子序列算法將作業文件與正確的答案文件進行相似度計算,從而將作業文件進行評價分類并通過語音播報出來;

⑤自動生成評價分類結果并保存到Excel表格。

具體流程如下頁圖4所示。

1.錄入學生信息

將全年級學生的信息匯總到Excel表格中,學生的信息包括學號和姓名,其中學號由兩位數的班級和兩位數的座位號組成,如11班1號,則學號為1101。編寫程序將Excel表格中全部的學生信息導入并保存到SQLite數據庫。

2.收集學生作業

首先,對計算機室的計算機按順序進行名稱修改,如第一臺計算機名稱為“xs01”,第二臺計算機名稱為“xs02”,依此類推。學生根據自己的座位號就座相應的位置。課堂上學生通過紅蜘蛛多媒體教學軟件提交作業后,紅蜘蛛多媒體教學軟件會為每位學生在教師機端自動生成一個文件夾以存放學生的作業,文件夾命名為對應的學生機的名稱。學生所提交的作業文件統一以“班級+學號+姓名”的形式命名,如11班1號張三,則命名為“1101張三”。

3.獲取學生作業

通過編寫程序以迭代的方式獲取每位學生所提交的作業所對應的文件夾的路徑。

4.檢查學生作業

(1)算法設計

①統計每個學生文件夾里提交的Python程序作業文件的數量。

②正常情況下,每個學生的文件夾里只有一個Python程序作業文件,如果多于一個則認為該生為他人提交作業。從數據庫中查找是否有這些人,如有則將文件夾里的所有作業對應的學生均記錄為“抄襲作業”,同時標記為“已交作業”。

③在文件夾里只有一個Python程序作業文件的情況下,先從數據庫中查找是否有此人,如有則獲取該文件的路徑、名稱、時間、大小、學生學號和姓名等信息,同時標記為“已交作業”。然后檢查文件的大小:文件大小為0KB,則記錄該生所提交作業為“空白作業”。文件大小大于0KB,則對文件進行編譯處理以及將作業文件與答案文件進行相似度計算。編譯通過且相似度大于0.8,則記錄為“優秀作業”;編譯不通過且相似度小于0.15,則記錄為“亂做作業”。

④以班級為單位從數據庫中查找出該班所有的學生,“減去”標記為“已交作業”的學生,從而得到“未交作業”的學生。

(2)具體實現

①統計每個學生所提交作業對應的文件夾里后綴名為“.py”的文件的數量。如果數量大于1,為防止學生在文件命名時,將學號和姓名顛倒或在命名中誤加入空格或其他特殊符號,本文采用正則表達的方法而非字符串分割截取的方法去提取文件名稱中的學號和姓名,其中利用正則表達式“[^0-9]+”提取文件名稱中的學號以及利用正則表達式“[^\u4e00-\u9fa5]”提取文件名稱中的姓名。由于學號是唯一的,因此利用學號與數據庫中該班級的所有學生學號進行對比,如數據庫中存在這些學生,則將這些學生均記錄為“抄襲作業”,并標記為“已交作業”。

②如果文件夾里后綴名為“.py”的文件的數量為1,則獲取該文件的路徑、名稱、時間、大小等信息以及利用正則表達式“[^0-9]+”和“[^\u4e00-\u9fa5]”分別提取名稱中的學號和姓名,接著查找學生信息數據庫中是否有此人,如有則標記為“已交作業”。

如果該文件的大小為0KB,則將該生記錄為“空白作業”,如果大于0KB,那么:

a.編程調用mypy工具對文件進行靜態編譯,如果編譯通過則其標準輸出通道中會含有“Success”關鍵字,否則含有“error”關鍵字,從而根據關鍵字去判斷Python程序作業文件是否編譯通過,也就是是否有誤;

b.打開Python作業文件及其對應的答案文件并分別讀取里面的全部內容。為使算法更合理準確,對所讀取到的內容進行預處理,Python程序中英文雙引號里面的內容以及程序注釋內容均為主觀定義的內容,內容可能相差較大,而且這些內容并不需要作為求最長公共子序列的內容,因此先用正則表達式“\”[^\”]*\”|#.*”去掉文件內容中的雙引號里面的內容和#號后面的內容。另外,去掉文件內容中的回車換行符和空格等。

③求出預處理好后的Python作業文件和其對應的答案文件的最長公共子序列,并求出它們的相似度。結合a和b,如果Python程序作業文件編譯通過且相似度大于0.8,則記錄為“優秀作業”;如果編譯不通過且相似度小于0.15,則記錄為“亂做作業”。

④以所選擇的班級為單位從數據庫中查找出該班所有的學生,“減去”標記為“已交作業”的學生而得到“未交作業”的學生。

實驗結果

批量檢查Python作業系統能在短時間內高效完成對全班作業的檢查,檢查結果將作業評價分類為“優秀作業”“未交作業”“抄襲作業”“亂做作業”和“空白作業”。在對2565份Python程序作業文件進行檢查后,得到的準確率較高。

討論

作為初學者,在極短時間的課堂里,學生基本都是按照課本上的程序代碼和教師的教學指導去編寫,加上初學的程序較為簡單且基本沒有第二種寫法,因此學生課堂上完成的Python程序基本與課本里的程序或教師要求完成的程序完全相同或者類似,從而非常適用于批量檢查Python作業系統。但該系統也存在一些不足之處:

①有些學生可能會按自己的想法去寫出正確的程序,造成所編寫的Python程序與答案程序較為不同,導致系統所檢測出的相似度偏低,從而可能不被系統判斷為“優秀作業”,但至少會被判斷為“已交作業”。根據實驗結果統計,在2565份作業中,只有2份作業出現這種情況,因此這種情況屬于極少數,對批量檢查Python作業系統的準確率的影響微乎其微。

②不適合較為復雜的或具有多種寫法的程序,因為這樣會造成與答案程序較為不同,導致系統所檢測出的相似度偏低。

總的來說,中小學信息技術課程中的編程內容對中小學的學習要求較低,基本是處于基礎的層面,程序較為簡單,且學生為初學者,因此批量檢查Python作業系統非常適合對中小學課堂Python程序作業的檢查。

參考文獻:

鄭翠玲.最長公共子序列算法的分析與實現[J].武夷學院學報,2010,29(02):44-48.

主站蜘蛛池模板: 亚洲午夜国产精品无卡| 欧美亚洲另类在线观看| 午夜福利免费视频| 中文字幕亚洲另类天堂| 91免费片| 亚洲三级视频在线观看| 97se亚洲综合| 精品国产91爱| 特级精品毛片免费观看| 国产精品久久久久久久久kt| 久久免费观看视频| 国产美女精品一区二区| 国产在线高清一级毛片| 网友自拍视频精品区| 国产精品吹潮在线观看中文| 国产SUV精品一区二区6| 国产农村精品一级毛片视频| 精品久久综合1区2区3区激情| 天天综合亚洲| 日韩欧美综合在线制服| 色欲色欲久久综合网| 国产尤物jk自慰制服喷水| 美女视频黄频a免费高清不卡| 在线看免费无码av天堂的| 欧美日韩高清在线| 97超爽成人免费视频在线播放| 91精品国产情侣高潮露脸| 日本高清有码人妻| 亚洲AV无码乱码在线观看裸奔| 久久精品这里只有国产中文精品| 9久久伊人精品综合| 国产18在线播放| 欧美怡红院视频一区二区三区| 亚洲第一在线播放| 女人18毛片久久| 国产精品自在线拍国产电影| 秋霞一区二区三区| 国产精品制服| 丁香婷婷激情综合激情| 国产成人亚洲精品蜜芽影院| 免费无码又爽又黄又刺激网站| 国产性生大片免费观看性欧美| 国产一区二区三区在线观看视频| 国产亚洲欧美日韩在线观看一区二区| 久久久久亚洲精品无码网站| 玖玖免费视频在线观看| 日本a级免费| 亚洲无码91视频| 她的性爱视频| 中文字幕 欧美日韩| 一本一本大道香蕉久在线播放| 欧美一区二区精品久久久| 88av在线播放| 88av在线| 91精品国产自产在线观看| 欧美色视频日本| 91在线无码精品秘九色APP| 无码高潮喷水在线观看| 亚洲男人在线| 亚洲日韩国产精品无码专区| 黄色网在线免费观看| 久久这里只有精品免费| 青青草国产免费国产| 宅男噜噜噜66国产在线观看| 91精品国产情侣高潮露脸| 亚洲综合色在线| 亚洲欧洲日韩国产综合在线二区| 国产欧美日韩另类| 国产免费精彩视频| 国产精品区视频中文字幕| 国产毛片一区| 国产精品欧美日本韩免费一区二区三区不卡 | 亚洲黄网视频| 亚洲人成人无码www| 99人体免费视频| 激情综合激情| 精品一区二区三区视频免费观看| 亚洲综合亚洲国产尤物| 成人一区在线| 亚洲美女一区二区三区| 国产福利小视频在线播放观看| 四虎成人在线视频|