我的学术系主任在Moodle测验中给了我一个有趣的问题。
我有一个测验问题,我提出了一个输入编辑框。也许是Cloze,或者正则表达式的问题类型。我现在不确定。
这个问题值得2分。有一个输入框,输入根据输入字符串的两个子部分授予标记。
标记方案1:
你遵循他的建议|没有(任何)论证
标记方案1的含义:
如果学生输入“你已经遵循他的建议”,则会获得1分。如果学生的句子还包括“无论证”或“没有任何争论”,则再授予1个分数。两个部分的顺序很重要。我不能让学生输入“没有任何争论你遵循他的建议”并给出2分。
标记方案2:
学生应该|必须参加/做/参加考试
标记方案2的含义:
如果学生输入“学生应该”1分。如果学生的判决还包括“必须参加考试”或“必须参加考试”或“必须参加考试”,则会再获得1分。两个部分的顺序很重要。我不能让学生输入“没有任何争论你遵循他的建议”并给出2分。
我是如何实现这一点的?
问候 Frankie Kam
后记。 大鼠。刚被降级,因为这是一个“钓鱼补贴”的问题。完全配得上它。我现在通过http://regexone.com/了解正则表达式,以便将来我的问题可以更加面向研究,更具建设性......!
答案 0 :(得分:4)
好吧,没有人帮助我,因为我在没有提供先前研究证据的情况下提出要求。因此,我不再依赖鱼的讲义,而是决定施展自己的诱惑,自己捕鱼。我的意思是,谷歌我自己。好的,在整个万维网上钓鱼48小时后,我得到了答案!
诀窍是在Moodle Cloze问题类型语法中使用“正则表达式简答题类型”语法。混乱?希望以下链接和信息将更清晰:
下载并安装到您的/ question / type /文件夹。
{2:REGEXP:~=students should have to take exams~=students should have to (take|do|sit)
exams~%50%students should.*#Feedback for half credit answer~%50%.*(have to
(take|do|sit) exams)$#Feedback for half credit answer}
{2: ... } means that this question is worth 2 marks
{..:REGEXP:...} identifies this question as a regular expression variant of the short
answer question type. It accepts non-case sensitive input strings and processes them
accordingly.
"~=students should have to take exams" (minus the ")
意味着这是一个100%的答案,值得2分。
确保您还在moodle安装上下载并安装了所需的行为更多插件。这些插件是2个问题行为,位于: https://github.com/rezeau/moodle-qbehaviour_regexpadaptivewithhelp 和 https://github.com/rezeau/moodle-qbehaviour_regexpadaptivewithhelpnopenalty 或者从moodle的插件库下载http://moodle.org/plugins/browse.php?list=category&id=31 下载并安装到/ question / behavior /文件夹。
为了在Cloze语法中使用“正则表达式简答题类型”语法(更多关于这一点),您需要复制2个被黑客攻击的文件并覆盖您的/问题/ type / multianswer文件夹。
您可以阅读以下关键步骤: http://docs.moodle.org/25/en/question/type/regexp#The_RegExp_Short_Answer_Question
4.1对于正则表达式新手: http://regexone.com/
4.2有关更多参考,编码示例和语法: https://kb.wisc.edu/moodle/page.php?id=26623 http://www.stedee.id.au/Learn_Regular_Expressions-WildCards http://www.tjhsst.edu/~dhyatt/perl/exA.html http://stefanstools.sourceforge.net/regexhelp.html http://www.regular-expressions.info/characters.html
4.3用于测试正则表达式代码结果的交互式正则表达式工具(非常有用!): http://www.regular-expressions.info/javascriptexample.html
以下面的代码为例。
I don't think {2:REGEXP:~=students should have to take exams~=students should have to
(take|do|sit) exams~%50%students should.*#Feedback for half credit answer~%50%.*(have
to (take|do|sit) exams)$#Feedback for half credit answer} exams.
结果屏幕就是这样。
让我们把它分解成字母汤,现在我们呢?
"~=students should have to (take|do|sit) exams"
意味着Noodle,我的意思是Moodle,将为这些输入中的任何一个奖励2个完整的标记:
students should have to take exams
students should have to do exams
students should have to sit exams
"~%50%students should.*"
意味着如果输入的前半部分包含非学生敏感字符串“学生应该”,Moodle的测验引擎将授予1分(即2分的50%)。所以像“学生应该gobbledegook”这样的输入会给你1分。
"~%50%.*(have to (take|do|sit) exams)$#Feedback for half credit answer"
表示如果输入句子结尾的字符串,则从2个标记中获得1个标记:
“必须参加考试”或 “必须做考试”或 “必须参加考试”。
美元符号($)是这个正则表达式代码背后的大脑,它检测句子是否以该特定字符串值结束。因此,输入结束于“Cruise必须做考试,宝贝!”不会匹配。只有像“克鲁斯攀登迪拜塔而他们仍需要参加考试”这样的句子确实会匹配。
所以你有它。我设法游戏正则表达式游戏。检查我的正则克星克星!你一直困扰着我的编程生活。现在是时候把桌子打开了你,你是正则表达的bogeyman!我终于获得了相当程度的正则表达式理解,足以让我编写和编写一个Moodle问题类型,其中包含一些人为的伪造人工智能。
现在我已经回答了我自己的问题,现在是时候将这个StackOverflow帖子的得分从卑鄙的-2提高到让N说为正。冲你的选票,伙伴堆栈流量的地球人!
的问候, 弗兰基“我对这个正则表达式的东西只会非常生气” 赞美主!