国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Python的程序評分軟件的設(shè)計(jì)與實(shí)現(xiàn)

2021-04-01 09:08王曉華
中國信息技術(shù)教育 2021年2期
關(guān)鍵詞:評分程序

摘要:隨著Python越來越受到編程愛好者的青睞,普通高中信息技術(shù)教材都采用了Python作為編程語言。但在實(shí)際教學(xué)過程中,學(xué)生編寫了很多Python程序,教師如果都進(jìn)行手工批改,工作量就很大。作者提出使用基于Python的評分軟件,可以大大提高教師的工作效率,體現(xiàn)信息技術(shù)的優(yōu)勢。

關(guān)鍵詞:Python;程序;評分;黑箱測試

中圖分類號(hào):G434 ?文獻(xiàn)標(biāo)識(shí)碼:A ?論文編號(hào):1674-2117(2021)02-0077-03

Python簡單易學(xué),功能強(qiáng)大,相比其他語言更容易上手。2020年9月,江蘇省正式開始使用高中信息技術(shù)新教材,采用的編程語言是Python。學(xué)生在學(xué)習(xí)編程的過程中,寫了很多的Python程序需要批改。另外,即使是解決同一個(gè)問題,學(xué)生的程序也是五花八門,各有特色。因此,對于教師來說,逐個(gè)手工批改程序作業(yè),費(fèi)時(shí)費(fèi)力。

Python在文本處理、自動(dòng)化辦公等方面有著很大的優(yōu)勢,用很短的代碼便可實(shí)現(xiàn)一些煩瑣工作的自動(dòng)化處理。因此,本文采用黑箱測試法來評價(jià)學(xué)生的程序。

● 問題描述

現(xiàn)有若干班級(jí)的Python程序等待批改(如圖1),每名學(xué)生都有一個(gè)以學(xué)號(hào)命名的文件夾,程序文件名都是統(tǒng)一的,所有學(xué)生的文件夾都在student目錄中。要求批改每名學(xué)生的程序,給出評分、程序運(yùn)行時(shí)間以及錯(cuò)誤提示信息,形成電子表格。

● 準(zhǔn)備工作

學(xué)校機(jī)房里的計(jì)算機(jī)都裝有Thonny3.2.7,自帶Python3.7.7。Thonny的界面簡潔明了,適合初學(xué)者。系統(tǒng)中安裝了常見的第三方庫,為了將結(jié)果寫入電子表格,還安裝了openpyxl庫。

● 軟件的設(shè)計(jì)分析

本軟件的輸入信息為學(xué)生的Python程序,輸出信息為程序評分的結(jié)果,包括得分、程序運(yùn)行時(shí)間、程序錯(cuò)誤信息。

Python自帶模塊subprocess,它可以創(chuàng)建一個(gè)子進(jìn)程,并運(yùn)行一個(gè)外部的程序,正好可以用于測試學(xué)生程序。

學(xué)生程序的輸入輸出都是通過鍵盤和顯示器,subprocess可以將輸入輸出定義到指定的文件,方便實(shí)現(xiàn)批量處理。

本軟件采用黑箱測試法給學(xué)生程序評分。通過比對學(xué)生程序的輸出和教師程序的輸出是否相同,來確定學(xué)生程序的得分。

● 軟件的主要代碼

1.獲取配置文件信息

評分軟件的文件夾programJudge和學(xué)生文件夾在同一目錄。

評分軟件的配置文件為programJudge.js,內(nèi)容如圖2所示。

學(xué)生程序名應(yīng)根據(jù)實(shí)際的要求改為相應(yīng)的Python程序名。

timeout的值是學(xué)生程序最長運(yùn)行時(shí)間,本軟件設(shè)置為3秒。

class的值是若干個(gè)班級(jí)的編號(hào)。

將配置文件讀入到字典d中,只需一行代碼,如圖3所示。

2.獲取測試數(shù)據(jù)

測試數(shù)據(jù)和教師標(biāo)準(zhǔn)程序所在文件夾:programJudge/學(xué)生程序名/。

輸入文件為:0.in, 1.in, … 由教師自己手工生成。

標(biāo)準(zhǔn)答案為:0.ans, 1.ans, …由教師程序自動(dòng)產(chǎn)生。

獲取測試數(shù)據(jù)getNumOfTestFile()代碼如圖4所示。

該函數(shù)將根據(jù)順序編號(hào)的輸入文件數(shù)量返回測試數(shù)據(jù)數(shù)量,同時(shí),根據(jù)教師程序生成標(biāo)準(zhǔn)答案,函數(shù)myCmd在后面會(huì)有說明。

3.新建工作簿

新建工作簿是為了收集學(xué)生程序的評分信息,代碼如圖5所示。

4.枚舉學(xué)生文件

枚舉學(xué)號(hào)studID,如果studID的前綴和班級(jí)一致,處理該學(xué)號(hào)(如上頁圖6)。其中,n為測試數(shù)據(jù)數(shù)量。

5.學(xué)生文件的評分

根據(jù)學(xué)號(hào)和程序名得到學(xué)生文件studFile,如果studFile不存在,得分score為-1,如果存在,分別用n組測試數(shù)據(jù)測試,如果學(xué)生程序的輸出文件和標(biāo)準(zhǔn)答案文件相同,那么k自增1。n組數(shù)據(jù)測試完畢,k*100/n即為本程序的得分,如上頁圖7所示。

程序執(zhí)行時(shí)間和錯(cuò)誤信息要根據(jù)myCmd的返回值而定,代碼如圖8所示。

subprocess.run執(zhí)行完畢后,若是學(xué)生程序超時(shí),返回(0,'Timeout'),若是returncode為0,表示正常結(jié)束學(xué)生程序,返回(執(zhí)行時(shí)間,),否則返回(0,'Error')。一般是學(xué)生程序中存在錯(cuò)誤,可在文件testOut中獲取錯(cuò)誤信息,本軟件只取錯(cuò)誤信息的最后一行寫入表格,方便教師了解學(xué)生程序中出現(xiàn)的錯(cuò)誤種類。

ws為新建的工作簿的活動(dòng)工作表,ws.append可以將一個(gè)元組作為行寫入工作表中,最終形成所有學(xué)生程序評分的一張表格,如圖9所示。

其中,score為-1表示學(xué)生程序文件不存在;time單位為ms;error為TimeOut一般是學(xué)生程序出現(xiàn)死循環(huán)或者算法沒有優(yōu)化;其他錯(cuò)誤與Thonny中運(yùn)行Python程序的錯(cuò)誤提示信息是一樣的。

● 結(jié)論

本文從一線教師的實(shí)際需求出發(fā),通過黑箱測試法給學(xué)生程序自動(dòng)評分,利用Python的subprocess模塊,獲取學(xué)生程序執(zhí)行的其他信息,如執(zhí)行時(shí)間、錯(cuò)誤提示信息等,最終得到一張學(xué)生程序評分的表格。這樣可以讓教師及時(shí)掌握學(xué)生的學(xué)習(xí)情況,學(xué)生也能獲得及時(shí)的反饋,有利于更好地學(xué)習(xí)編程。

參考文獻(xiàn):

[1]Python3.7. Using the subprocess Module [OL].2020.

[2]Eric Gazoni,Charlie Clark. openpyxl - A Python library to read/write Excel 2010 xlsx/xlsm files [OL]. 2020.

作者簡介:王曉華(1973—),男,江蘇無錫人,教育碩士,中學(xué)高級(jí),無錫市第一中學(xué)信息技術(shù)教師。

基金項(xiàng)目:本文是江蘇省教育科學(xué)“十三五”規(guī)劃2020年度普教立項(xiàng)課題“基于計(jì)算思維的高中生設(shè)計(jì)與智造項(xiàng)目化實(shí)踐研究”階段性成果,課題批準(zhǔn)文號(hào):D/2020/02/283;2019年江蘇省基礎(chǔ)教育前瞻性教學(xué)改革實(shí)驗(yàn)項(xiàng)目“設(shè)計(jì)與智造:統(tǒng)整理念下高中生學(xué)習(xí)方式的變革”階段性成果。

猜你喜歡
評分程序
APACHEⅡ評分在制定ICU患者護(hù)理干預(yù)措施中的應(yīng)用研究
給Windows添加程序快速切換欄
簡化化學(xué)平衡移動(dòng)教學(xué)程序探索
雙周最佳陣容
雙周最佳陣容
“程序猿”的生活什么樣
英國與歐盟正式啟動(dòng)“離婚”程序程序
雙周最佳陣容
义马市| 博乐市| 大田县| 石屏县| 乐业县| 平果县| 凌海市| 尖扎县| 南陵县| 苍梧县| 和林格尔县| 托里县| 张家港市| 宜宾县| 宁城县| 怀化市| 剑阁县| 炎陵县| 桃源县| 延寿县| 灯塔市| 古浪县| 新宾| 太保市| 洛扎县| 萍乡市| 平山县| 赫章县| 石嘴山市| 理塘县| 来安县| 镇巴县| 兴山县| 航空| 杭锦旗| 温州市| 聂拉木县| 临洮县| 白沙| 沙雅县| 石棉县|