首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在WebWork中使用循环创建显示表?(PG)

如何在WebWork中使用循环创建显示表?(PG)
EN

Stack Overflow用户
提问于 2021-05-25 15:16:15
回答 1查看 87关注 0票数 0

大约一周前,我开始学习Perl,现在我正在WebWorK中创建问题,以帮助学生练习他们的派生技能。我想打印一个表格的问题和相应的答案框,以尽可能少的劳动密集型的方式,因为这些问题将大量产生。

到目前为止,我一直在手动输入所需的代码,并且需要大量的复制粘贴。目前结构的一个例子如下:

代码语言:javascript
复制
@questions=(
"x(x+1)",
"x^2(1-x)",
"(x+2)(3x-4)",
"(x-\sqrt{x})(x+\sqrt{x})",
"(x^3-\frac{x^2}{3}-1)(2-x)",
"(x^3-2x)(x^{-2}+\frac{1}{x^4})",
"\frac{x-\sqrt{2x}}{x^2}"
);

BEGIN_TEXT
$BR $BR
Find the derivatives. 
$PAR
END_TEXT

@header=(" f(x) "," f '(x) ");
@header = map {EV3($_) } @header;

TEXT(
begintable(1+scalar(@header)), 
    row(@header),
    row("\[\qquad{$questions[0]}\qquad\]",ans_rule(10)),
    row("\[\qquad{$questions[1]}\qquad\]",ans_rule(10)),
    row("\[\qquad{$questions[2]}\qquad\]",ans_rule(10)),
    row("\[\qquad{$questions[3]}\qquad\]",ans_rule(10)),
    row("\[\qquad{$questions[4]}\qquad\]",ans_rule(10)),
    row("\[\qquad{$questions[5]}\qquad\]",ans_rule(10)),
    row("\[\qquad{$questions[6]}\qquad\]",ans_rule(10)),
endtable() 
);

我想使用一个循环来使事情变得更干净,并消除了当一组问题的数量发生变化时更新行的需要。到目前为止,我已经尝试过这样做,但是WebWorK不希望在不抛出语法错误的情况下接受它,这使我相信我不能在表构造中执行循环。

代码语言:javascript
复制
@questions=(
"x(x+1)",
"x^2(1-x)",
"(x+2)(3x-4)",
"(x-\sqrt{x})(x+\sqrt{x})",
"(x^3-\frac{x^2}{3}-1)(2-x)",
"(x^3-2x)(x^{-2}+\frac{1}{x^4})",
"\frac{x-\sqrt{2x}}{x^2}"
);

BEGIN_TEXT
$BR $BR
Find the derivatives. 
$PAR
END_TEXT

@header=(" f(x) "," f '(x) ");
@header = map {EV3($_) } @header;

TEXT(
begintable(1+scalar(@header)), 
    row(@header),
    for($i = 0; $i <= $#questions; $i++) {
    row("\[\qquad{$questions[$i]}\qquad\]",ans_rule(10)),
    }
endtable() 
);

由于对这门语言如此陌生,我在网上找到的任何东西都很难应用到我的具体问题上,有人能帮我弄清楚如何做到这一点吗?

编辑:我插入了钳子提供的代码段,得到了以下结果:

代码:

代码语言:javascript
复制
TEXT(                                                          #71
begintable(1+scalar(@header)),                                 #72
    row(@header),                                              #73
    map {row("\[\qquad{$_}\qquad\]",ans_rule(10))} @questions; #74
endtable()                                                     #75
);                                                             #76

错误消息:

代码语言:javascript
复制
ERRORS from evaluating PG file: 
 syntax error at (eval 28451) line 74, at EOF
syntax error at (eval 28451) line 76, near ") 
)"
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-26 17:55:51

TEXT()函数需要一个值列表。您的for循环出现在此参数列表中,在该列表中,它没有使用,因为它不计算为值列表。在调用TEXT()函数之前创建值:

代码语言:javascript
复制
@questions=(
"x(x+1)",
"x^2(1-x)",
"(x+2)(3x-4)",
"(x-\sqrt{x})(x+\sqrt{x})",
"(x^3-\frac{x^2}{3}-1)(2-x)",
"(x^3-2x)(x^{-2}+\frac{1}{x^4})",
"\frac{x-\sqrt{2x}}{x^2}");

@formatted = map { row("\[\qquad{$_}\qquad\]",ans_rule(10))} @questions;

BEGIN_TEXT
$BR $BR
Find the derivatives. 
$PAR
END_TEXT

@header=(" f(x) "," f '(x) ");
@header = map {EV3($_) } @header;

TEXT(
begintable(1+scalar(@header)), 
    row(@header),
    @formatted,
endtable() 
);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67690896

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档