1

我的学术系主任给了我一个有趣的问题,让我在 Moodle 测验中实施。

我有一个测验问题,我提出了一个输入编辑框。也许是完形填空,或者问题类型的正则表达式类型。我现在不确定。

该问题值 2 分。有一个输入框,根据输入字符串的两个小节给输入打分。

评分方案1:
你听从了他的建议 | 没有(任何)论据

评分方案的含义1:
如果学生输入“您已听从他的建议”,则获得 1 分。如果学生的句子还包括“没有争论”或“没有任何争论”,则再获得 1 分。两个部分的顺序很重要。我不能让学生输入“没有任何争论,你已经听从了他的建议”并给 2 分。

评分方案2:
学生应该 | 必须参加/做/参加考试

评分方案 2 的含义:
如果学生输入“学生应该”,则获得 1 分。如果学生的句子还包括“必须参加考试”或“必须参加考试”或“必须参加考试”,则再获得 1 分。两个部分的顺序很重要。我不能让学生输入“没有任何争论,你已经听从了他的建议”并给 2 分。

有什么想法可以实现吗?

问候弗兰基·卡姆

后记。大鼠。刚刚被降级,因为这是一个“寻找讲义”的​​问题。完全应得的。我现在通过http://regexone.com/学习正则表达式,以便将来我的问题可以更具研究性和建设性......!

4

1 回答 1

4

好的,没有人帮助我,因为我在没有提供先前研究证据的情况下询问。因此,我决定自己投下诱饵,自己钓鱼,而不是依靠鱼的讲义。我的意思是,我自己的谷歌。好的,经过 48 小时在整个万维网上钓鱼,我得到了答案!

诀窍是在 Moodle Cloze 问题类型语法中使用“正则表达式简答题类型”语法。令人困惑?希望下面的链接和信息会让它更清楚:

  1. 您需要从这里下载并安装“正则表达式简答题类型”插件https://moodle.org/plugins/view.php?plugin=qtype_regexp

下载并安装到您的 /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 分。

  1. 确保您还下载并安装所需的行为更多插件在您的 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/behaviour/ 文件夹。

  2. 为了在完形填空语法中使用“正则表达式简答题类型”语法(稍后会详细介绍),您需要复制 /question/type/multianswer 文件夹的 2 个被黑文件并覆盖。

您可以在以下位置阅读有关此关键步骤的信息: http: //docs.moodle.org/25/en/question/type/regexp#The_RegExp_Short_Answer_Question

  1. 学习正则表达式!无法替代了解基础知识。我的意思是,在不了解规则和基本原理的情况下,如何期望在国际象棋、五人制足球或桥牌比赛中获胜?所以别再唠叨了,去谷歌搜索一下网络上最好的正则表达式资源吧。我用来完成这项工作的正则表达式资源分为三类。

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

  1. 现在下到 Moodle 车间地下室,用一些原始编码和所有算法的东西弄脏手。您知道计算机科学家、软件工程师和程序员所说的那些在普通 IT 用户头上飞过的东西。我正在考虑正则表达式代码,宝贝!本节是您的 stackoverflow 用户来到这里的目的。看看你是否有比头脑更好的解决方案。哦,是的,这是一个大胆的尝试。

以下面的代码为例。

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.*" 

表示如果输入的前半部分包含不区分大小写的字符串“students should”,则 Moodle 的测验引擎将奖励 1 分(即 2 分的 50%)。所以像“students should goobbledegook”这样的输入会给你1分。

"~%50%.*(have to (take|do|sit) exams)$#Feedback for half credit answer" 

意味着如果您输入一个句子结尾的字符串,您将获得 2 分中的 1 分:

“必须参加考试”或“必须参加考试”或“必须参加考试”。

美元符号 ($) 是这个正则表达式代码背后的大脑,它检测句子是否以该特定字符串值结尾。因此,输入以“Cruise 必须进行考试,宝贝!”结尾。不会匹配。只有像“Cruise 爬上迪拜塔,他们还要考试”这样的句子才真正符合。

所以你有它。我设法玩正则表达式游戏。将死我的正则表达式克星!在我的编程生涯中,你一直困扰着我。现在是时候打开你的桌子了,你这个正则表达式的怪物!我终于达到了对正则表达式的理解水平,足以让我编写和编写一个 Moodle 问题类型,其中包含一些人工的伪人工智能。

现在我已经回答了我自己的问题,是时候将这个 StackOverflow 帖子的分数从卑鄙的 -2 提高到 N 肯定了。加入你的选票,stackoverflow 地球人!

问候,弗兰基“我对这个正则表达式的东西简直要发疯了”锦赞美主!

于 2013-11-19T00:38:38.027 回答