本次实验作业的测评工具仅使用Python语言编写。
程序思路是基于文本的快速匹配。
编译test.py运行
GUI界面使用了PyQt5完成,简单、易用
首先要求同学代码统一使用循环读入字符串的形式读入数据,保证了数据读入的效率。
然后直接使用print(json.dumps(dic))的形式打印出答案,保证输出格式统一。
一行输入对于一行输出。主文件以学号命名,如 ‘041702324.py’
直接使用gitpython库,在测评工具下提取指定链接地址的github仓库。将作业代码及其依赖文件clone到本地文件夹。保证了程序运行时所需要的依赖文件,如.json .xlsx等
在程序执行前,为保证程序输入,输出正确。我们使用了输入输出重定向的方式。
但是,第一次时遇到了windows的致命问题,windows控制台下的中文编码并非是utf-8
格式式,并且无法正确转换编码。
于是借鉴了丁枢桐同学的思路,直接修改测评代码,正在代码前后分别加上以下代码。
# -*- coding: utf-8 -*-
import sys,os
sys.stdin=open(r'./input.txt','r',encoding='utf-8')
sys.stdout=open(r'./output.txt','w',encoding='utf-8')
...
sys.stdout.close()
sys.stdin.close()
直接使用sys库的stdin,stdout,重定向input,print的数据接收和输出方向。
然后执行
os.system('python '+文件名)
控制台下直接运行python程序
获取到2.3的output.txt后,与标准答案 answer.txt逐行比对即可。
本测评工具不仅在功能上包含了天枢星的单个测试点比较的功能,保证程序bug不会使你程序终止为0分,同时考虑到了python性能较差的方面,如果程序使用了大量的附加文件如xlsx,json等导致程序运行缓慢,如果单个输入输出,会导致测试较慢。于是我们使用快速程序直接单次运行下读入全部数据,和输出全部数据。