admin 管理员组

文章数量: 887021


2023年12月19日发(作者:网络环境与编程实验报告)

*********************技术与应用基于Python的程序评分软件的设计与实现王晓华 江苏省无锡市第一中学随着Python越来越受到编程爱好者的青睐,普通高中信息技术教材都采用了Python作为编程语言。但在实际教学摘要:过程中,学生编写了很多Python程序,教师如果都进行手工批改,工作量就很大。作者提出使用基于Python的评分软件,可以大大提高教师的工作效率,体现信息技术的优势。Python;程序;评分;黑箱测试关键词:G434

文献标识码:A

论文编号:1674-2117(2021)02-0077-03中图分类号:Python简单易学,功能强大,相比其他语言更容易上手。2020年9月,江苏省正式开始使用高中信息技术新教材,采用的编程语言是Python。学生在学习编程的过程中,写了很多的Python程序需要批改。另外,即使是解决同一个问题,学生的程序也是五花八门,各有特色。因此,对于教师来说,逐个手工批改程序作业,费时费力。Python在文本处理、自动化办公等方面有着很大的优势,用很短的代码便可实现一些烦琐工作的自动化处理。因此,本文采用黑箱测试法来评价学生的程序。● 问题描述现有若干班级的Python程序等待批改(如图1),每名学生都有一个以学号命名的文件夹,程序文件名都是统一的,所有学生的文件夹都在student目录中。要求批改每名学生的程序,给出评分、程序运行时间以及错误提示信息,形成电子表格。● 准备工作学校机房里的计算机都装有Thonny3.2.7,自带Python3.7.7。Thonny的界面简洁明了,适合初学者。系统中安装了常见的第三方库,为了将结果写入电子表格,还安装了openpyxl库。● 软件的设计分析本软件的输入信息为学生的Python程序,输出信息为程序评分的结果,包括得分、程序运行时间、程序错误信息。图1JAN. 2021 NO.0277

技术与应用*********************Python自带模块subprocess,它可以创建一个子进程,并运行一个外部的程序,正好可以用于测试学生程序。学生程序的输入输出都是通过键盘和显示器,subprocess可以将输入输出定义到指定的文件,方便实现批量处理。本软件采用黑箱测试法给学生程序评分。通过比对学生程序的输出和教师程序的输出是否相同,来确定学生程序的得分。● 软件的主要代码1.获取配置文件信息评分软件的文件夹programJudge和学生文件夹在同一目录。评分软件的配置文件为,内容如图2所示。学生程序名应根据实际的要求改为相应的Python程序名。timeout的值是学生程序最长运行时间,本软件设置为3秒。class的值是若干个班级的编号。将配置文件读入到字典d中,只需一行代码,如图3所示。2.获取测试数据测试数据和教师标准程序所在文件夹:programJudge/学生程序名/。输入文件为:, , …

由教师自己手工生成。标准答案为:, ,

…由教师程序自动产生。获取测试数据getNumOfTestFile()78中国信息技术教育代码如图4所示。3.新建工作簿该函数将根据顺序编号的新建工作簿是为了收集学生输入文件数量返回测试数据数程序的评分信息,代码如图5所示。量,同时,根据教师程序生成标4.枚举学生文件准答案,函数myCmd在后面会枚举学号studID,如果有说明。studID的前缀和班级一致,处理图2图3图4图5图6图7

*********************技术与应用该学号(如上页图6)。其中,n为测试数据数量。5.学生文件的评分根据学号和程序名得到学生文件studFile,如果studFile不存在,得分score为-1,如果存在,分别用n组测试数据测试,如果学生程序的输出文件和标准答案文件相同,那么k自增1。n组数据测试完毕,k*100/n即为本程序的得分,如上页图7所示。程序执行时间和错误信息要根据myCmd的返回值而定,代码如图8所示。执行完毕后,若是学生程序超时,返回(0,'Timeout'),若是returncode为0,表示正常结束学生程序,返回(执行时间,’’),否则返回(0,'Error')。一般是学生程序中存在错误,可在文件testOut中获取错误信息,本软件只取错误信息的最后一行写入表格,方便教师了解学生程序中出现的错误种类。ws为新建的工作簿的活动工作表,可以将一个元组作为行写入工作表中,最终形成所有学生程序评分的一张表格,如图9所示。其中,score为-1表示学生程序文件不存在;time单位为ms;error为TimeOut一般是学生程序出现死循环或者算法没有优化;其他错误与Thonny中运行Python程序的错误提示信息是一样的。● 结论本文从一线教师的实际需图9图8求出发,通过黑箱测试法给学生程序自动评分,利用Python的subprocess模块,获取学生程序执行的其他信息,如执行时间、错误提示信息等,最终得到一张学生程序评分的表格。这样可以让教师及时掌握学生的学习情况,学生也能获得及时的反馈,有利于更好地学习编程。参考文献:[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—),男,江苏无锡人,教育硕士,中学高级,无锡市第一中学信息技术教师。基金项目:本文是江苏省教育科学“十三五”规划2020年度普教立项课题“基于计算思维的高中生设计与智造项目化实践研究”阶段性成果,课题批准文号:D/2020/02/283;2019年江苏省基础教育前瞻性教学改革实验项目“设计与智造:统整理念下高中生学习方式的变革”阶段性成果。JAN. 2021 NO.0279


本文标签: 程序 学生 评分 教师 文件