CN112799938A - 一种基于python的microbit编程题目自动评测方法及系统 - Google Patents

一种基于python的microbit编程题目自动评测方法及系统 Download PDF

Info

Publication number
CN112799938A
CN112799938A CN202110085056.1A CN202110085056A CN112799938A CN 112799938 A CN112799938 A CN 112799938A CN 202110085056 A CN202110085056 A CN 202110085056A CN 112799938 A CN112799938 A CN 112799938A
Authority
CN
China
Prior art keywords
state
comparison
answer
code
python
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202110085056.1A
Other languages
English (en)
Inventor
不公告发明人
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhongsenyunlian Chengdu Technology Co ltd
Original Assignee
Zhongsenyunlian Chengdu Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Zhongsenyunlian Chengdu Technology Co ltd filed Critical Zhongsenyunlian Chengdu Technology Co ltd
Priority to CN202110085056.1A priority Critical patent/CN112799938A/zh
Publication of CN112799938A publication Critical patent/CN112799938A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3624Software debugging by performing operations on the source code, e.g. via a compiler
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/315Object-oriented languages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/72Code refactoring
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09BEDUCATIONAL OR DEMONSTRATION APPLIANCES; APPLIANCES FOR TEACHING, OR COMMUNICATING WITH, THE BLIND, DEAF OR MUTE; MODELS; PLANETARIA; GLOBES; MAPS; DIAGRAMS
    • G09B7/00Electrically-operated teaching apparatus or devices working with questions and answers
    • G09B7/02Electrically-operated teaching apparatus or devices working with questions and answers of the type wherein the student is expected to construct an answer to the question which is presented or wherein the machine gives an answer to the question presented by a student

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Quality & Reliability (AREA)
  • Business, Economics & Management (AREA)
  • Educational Administration (AREA)
  • Educational Technology (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Security & Cryptography (AREA)
  • Electrically Operated Instructional Devices (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明涉及程序编写验证技术领域,具体涉及一种microbit编写工具makecode转换出来的python代码的自动评判方案和系统,该方法包括:接收python的答题代码,和字符串格式的正确答案的状态,运行相应的答题代码,并且生成中间状态,将生成的中间状态添加到用户答题状态中,然后将正确答案的状态转换为python的数据结构,将两个状态进行比较,得出正确状态的得分点,最后计算出总体的得分。本发明通过两个状态之前的状态进行相应的算法对比,实现了自动评判microbit的python代码的评测功能,节省了人工资源,并且提高了microbit编程题目的自动评判的全面性,灵活性和简单性。

Description

一种基于python的microbit编程题目自动评测方法及系统
技术领域
本发明涉及编写验证技术领域,具体涉及一种microbit编写工具makecode转换出来的python代码的自动评测方案和系统。
背景技术
计算机程序编程的应用在各个领域发展迅速,为了适应当前社会经济和信息产业化快速发展的需求,计算机程序编程已成为程序员必须熟练掌握的一种基本技能。近几年来,IEEE Spectrum 通过跟踪 Google 搜索、社交网站如 Stack Overflow、Twitter、Reddit和 Hacker News 上的相关讨论,GitHub 上的项目,以及工作招聘等信息,分析了49 种编程语言的流行度,Python编程语言的流行度一直名列前茅。另外,无论是学校对学生的 Python 语言的教学,还是培训机构对Python程序员的培训都是日益增加。由此可见,Python 编程语言的前景无量,可为社会信息产业化快速发展起到重要的作用。
目前的编程类题目自动评测方法主要有 3 种,第一种,根据静态结果文件进行判分,评判系统通过比较考生提供的结果文件和预先准备的标准结果文件的内容进行评判;第二种,通过动态执行程序进行判分,评判系统动态编译考生提交的程序,并按照一定的测试用例动态执行程序,通过比较程序运行返回的结果和标准结果进行评判;第三种,根据程序源代码进行判分,评判系统按照一定的算法对考生提交的源程序代码和预先准备的标准源程序代码内容进行比较,依据它们的相似性进行评判。另外,这些方法在分数评定上仍存在一些问题:方法 1 和方法 2 使用黑盒的方式,只验证结果而不验证程序流程,无法完全保证程序的正确性,且程序中任何一个输出格式的错误都有可能导致整个程序错误;方法3也存在较大的问题,对大多数语言来说,完成某一功能的程序实现方法种类较多,单靠相似度判定还比较困难。已有的方法主要针对过程型语言的特点进行设计,只适合于面向过程的程序评判,并不适用于面向对象程序。与面向过程程序相比,面向对象程序无论从编程思想、程序结构,还是语法成分、成分之间的逻辑关系以及代码形式上都有其自身的特点,在程序评判时只查看结果或只比较相似度都是不完善的。
发明内容
本发明的目的在于提出一种基于python的microbit编程题目自动评测方法及系统,能够自动评测python编程题目的答题代码,节省了人工资源,并且提高了评判的全面性。
为达此目的,本发明采用以下技术方案:
一种基于microbit的Python编程题目的评测方法,包括:
接收答题代码和正确答案的代码;
对用户的代码和正确答案的代码进行预处理,分别生成各自的状态;
对正确答案的状态和用户输入代码获取的状态进行算法对比;
可采用精确对比的方式,对用户整个代码进行全局对比,即为非对即错;
可采用非精确对比的方式,对用户整个代码进行逐一的分步骤对比,类似于按照代码的步骤进行给分;
通过所述评判代码的运行结果统计所述答题代码的得分。
优选地,所诉对所诉答题代码和预设代码进行处理,并且得出中间状态具体为:
将所述的答题代码和预设代码进行注册并且动态绑定初始状态;
对不安全的代码进行过滤;
按照执行代码要求分别执行答题代码和预设代码,然后分别得出相应的执行状态。
优选地,所诉对所诉答题代码和预设代码进行处理还包括:
对判断语句处理,变为固定的句式;
对循环语句的处理,变为固定的句式。
优选地, 所述的对正确答案的状态和用户输入代码获取的状态进行算法对比,具体为:
获取到用户的中间状态之后,并且还有获取到正确答案的状态,通过状态对比算法,可以快速的实现将两种状态的集合进行对比,并且在对比的过程中会计算出相应的得分点,为之后的计算成绩使用。
优选地,所述的可采用精确对比的方式,对用户整个代码进行全局对比,即为非对即错,具体为:
对于一些代码量较少的题目可以采用这种方式,因为考虑到代码量较少,所以整个题目的答案唯一性和答题过程的唯一性都是比较高的,所以使用精确对比的方式得出的得分点比较固定,评判更为准确。
优选地,可采用非精确对比的方式,对用户整个代码进行逐一的分步骤对比,类似于按照代码的步骤进行给分,具体为:
对于一些代码量较多,题目的难度较为复杂,答案和解题过程的唯一性较低,可能出现多种答案的的情况,所以这种情况的题目使用非精确对比比较合适,这种方式的优势为可以按照步骤得出相应的得分点,根据所得的得分点最后计算出最后的分数。
优选地,对于所诉的通过所述评判代码的运行结果统计所述答题代码的得分,具体为:
通过精确对比和非精确对比的算法,计算出相应的得分点,然后采用计分模式为平均分配得分点的分值,系统内部默认的总分为100分。如果答案不唯一,那么统计出的得分点取出最高分来计算。
附图说明
图 1 是本发明实施例的流程图。
具体实施方式
在本实施例中,所诉的评测代码采用了业界广泛应用的测试方法作为检测方式,与当前行业标准保持了一致性,降低了出题人编写评测代码的难度,只要掌握了该系统的相关API(Application Programming Interface,应用程序编程接口),则可以自动生成相应的正确代码的状态,在本实施例中,所诉的Python题目如果有多种答案的情况下,可以检测考生的答题代码的不同方面,对考生答题的逻辑正确性、结构性都可以进行详细的评判,本发明所诉的自动评判方法对学生编写具有面向对象特性的python编程题目中都可以进行详细的评判,本发明所诉的自动评判方法对学生编写具有面向对象特性的Python编程题目中各种评分因素考虑的比较全面,一方面可以方便众多的学校、培训机构或者公司里,经常需要对学生、学院或者与员工进行定期的考核或者考试,省去了人工评判编程题所耗费的人力和物力,另一方面可以推广具有实际意义的程序设计语言网络自动化考试,促进了计算机知识的普及。在硬件方面可以适应microbit编程,对于硬件的运行的结果,通过本发明可以进行预测,实现了软件结合硬件的代码评测。
在本实施例中,对所诉的对特殊语句的处理是针对判断语句和循环语句的处理,因为循环和判断在题目中是一种常见的解题方法,但是通过执行代码去获取状态,如果出现了相应的判断或者循环的语句的句式,如果不做处理会出现状态不准确,或者程序结束不了的情况,这样会对评测系统恶意攻击,因此本系统,回去相应的句式做出特殊的处理,重构成另一种Python写法,并且添加相应的状态予以标识这里使用了特殊语句并且做出了改变。
在本实施例中,通过执行代码并返回用户的状态列表,是将用户的代码和老师的答案代码通过执行算法将相应的类注册然后获取相应的属性并且生成相应的状态集合并保存。
在本实施例中,通过所述评判代码的运行结果统计所述答题代码的得分,另外还统计考生提交本题代码的次数得到相应的得分,最后的总分由这两部分的得分乘以不同的权重统计得到最高分并且返回这个最高分。
在本实施例中,通过注入代码的形式完成用户和老师写的程序正常运行,中间状态实现了对代码的重构,并且对代码进行加密,防止被黑客恶意攻击,这样可以提高代码的安全和可靠。
在本实施例中,老师输入正确的答案代码,在本系统运行过后,会根据这个代码实现运行结果,并且会返回相应的用户答案的状态,这个状态老师可以将其保存到一个txt文件或者json格式的文件,这个状态就相当于答案,如果有其他的储存系统可以配套进行使用,这个答案和题目一一对应的,下次再对统一道题目进行评测的时候可以直接进行使用这个保存的状态文件,不比再次执行老师的答案代码,提高了效率。

Claims (8)

1.一种基于python的microbit编程题目自动评测方法及系统,其特性包括:
对正确的字符串格式的正确答案的状态的转换处理;
对答题代码的进行预处理,生成状态,得到用户的答题的状态;
对列表中的状态进行算法对比;
根据题目要求可以分为精确状态对比和非精确状态对比;
根据得分点和运行结果统计所述答题代码的得分。
2.根据权利要求1所述的一种microbit编程题目python代码的自动评测方法,其特征在于对所诉对正确答案的状态转换处理,具体为:使用python内置方法将字符串转换为python的基础数据结构。
3.根据权利要求1所述的对答题代码的进行预处理,生成状态,得到用户的答题的状态,具体为:将用户的答题代码同样通过python的内置方法去执行,将会得到用户答题代码的状态,如果后期要做处理和应用可以将python数据结构的状态转换为字符串。
4.根据权利要求1所述的对正确的字符串格式的正确答案的状态的转换处理还包括正确答案的获取方式:用户需要将所有可能的答案通过本系统运行一遍,得到正确答案,然后将所得到的正确状态保存,相当于所有可能答案的集合。
5.根据权利要求1所述的对状态进行对比具体为:是将用户的答题状态分别与正确状态进行算法对比,对比结果转化为相应的得分点。
6.根据权利要求1所述的根据题目要求可以分为精确状态对比和非精确状态对比,其特性在于,精确对比即为将正确答案的状态和用户答题答案状态进行精准的算法对比,这样就要求用户输入代码的精准度,代码长度较为简短的情况适宜用这个方法;非精确对比即为将正确答案的状态和用户答题状态进行分散式对比,对每个句式的状态进行一一对比,即非精确对比是按照步骤计算得分点的,该情况在题目问题较为复杂,题目的代码行数较多的情况下进行使用。
7.根据权利要求1所述的根据得分点和运行结果统计所述答题代码的得分,其特性在于将计算出的得分点取出最大值,也就是得分点最多的,得分点最多意味着相似度也就越高,然后在根据的得分点计算出总分,目前的计算规则是给出一个总分,然后将总分平均分给若干知识点,从而计算出相应的总分。
8.根据权利要求5所述的对状态进行对比,其特性在于进行状态对比实质上就是通过相应的识别算法和对比算法对其状态的类型和值进行精确对比和分析。
CN202110085056.1A 2021-01-22 2021-01-22 一种基于python的microbit编程题目自动评测方法及系统 Pending CN112799938A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110085056.1A CN112799938A (zh) 2021-01-22 2021-01-22 一种基于python的microbit编程题目自动评测方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110085056.1A CN112799938A (zh) 2021-01-22 2021-01-22 一种基于python的microbit编程题目自动评测方法及系统

Publications (1)

Publication Number Publication Date
CN112799938A true CN112799938A (zh) 2021-05-14

Family

ID=75811137

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110085056.1A Pending CN112799938A (zh) 2021-01-22 2021-01-22 一种基于python的microbit编程题目自动评测方法及系统

Country Status (1)

Country Link
CN (1) CN112799938A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114895973A (zh) * 2022-04-19 2022-08-12 厦门科云信息科技有限公司 一种python编程题目的自动判分方法、装置以及设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1598809A (zh) * 2004-08-25 2005-03-23 哈尔滨工业大学 程序设计语言编程题自动评分的方法
CN106293654A (zh) * 2015-05-19 2017-01-04 广州数度软件有限公司 Java编程题目自动评判方法及系统
CN107943701A (zh) * 2017-11-28 2018-04-20 江苏传智播客教育科技股份有限公司 一种代码自动化校验方法和系统
US20180285101A1 (en) * 2017-03-29 2018-10-04 Technion Research & Development Foundation Limited Similarity of binaries
CN110765014A (zh) * 2019-10-22 2020-02-07 北京理工大学 一种Python绘图程序题自动评测方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1598809A (zh) * 2004-08-25 2005-03-23 哈尔滨工业大学 程序设计语言编程题自动评分的方法
CN106293654A (zh) * 2015-05-19 2017-01-04 广州数度软件有限公司 Java编程题目自动评判方法及系统
US20180285101A1 (en) * 2017-03-29 2018-10-04 Technion Research & Development Foundation Limited Similarity of binaries
CN107943701A (zh) * 2017-11-28 2018-04-20 江苏传智播客教育科技股份有限公司 一种代码自动化校验方法和系统
CN110765014A (zh) * 2019-10-22 2020-02-07 北京理工大学 一种Python绘图程序题自动评测方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114895973A (zh) * 2022-04-19 2022-08-12 厦门科云信息科技有限公司 一种python编程题目的自动判分方法、装置以及设备

Similar Documents

Publication Publication Date Title
US10720071B2 (en) Dynamic identification and validation of test questions from a corpus
WO2021121296A1 (zh) 习题测试数据生成方法以及装置
CN114913729B (zh) 一种选题方法、装置、计算机设备和存储介质
Tack et al. Human and automated CEFR-based grading of short answers
US11907863B2 (en) Natural language enrichment using action explanations
Geng et al. Effectiveness of the Automated Writing Evaluation Program on Improving Undergraduates' Writing Performance.
Wang et al. Combining dynamic and static analysis for automated grading sql statements
CN117194258A (zh) 一种代码大模型的评测方法和装置
Yu Matlab programming environment based on web
WO2021174829A1 (zh) 众包任务的抽检方法、装置、计算机设备及存储介质
CN110633072B (zh) 一种可供自动批改的编程训练题目构造方法及装置
CN114885216A (zh) 习题推送方法、系统、电子设备和存储介质
Hidayat et al. Usability evaluation on educational chatbot using the system usability scale (SUS)
CN112799938A (zh) 一种基于python的microbit编程题目自动评测方法及系统
Rashid et al. A framework of an automatic assessment system for learning programming
Zhang et al. Combining latent profile analysis and programming traces to understand novices’ differences in debugging
Jagadamba Online subjective answer verifying system using artificial intelligence
CN112632295A (zh) 基于知识图谱的学习资源动态规划方法及装置
Ichinco et al. Towards generalizing expert programmers' suggestions for novice programmers
CN115454841A (zh) 基于程序测试和分析的多维度代码质量综合评价方法及系统
CN114240705A (zh) 一种题库信息处理方法
da Silva et al. On the relation between code elements and accessibility issues in android apps
CN115510205A (zh) 一种问句生成的方法、系统及存储介质
Qi et al. Preserving knowledge invariance: Rethinking robustness evaluation of open information extraction
Gu [Retracted] Blended Oral English Teaching Based on Core Competence Training Model

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination