如何在 WebWork 中使用循环创建显示 table? (PG)
How to create a display table using loops in WebWork? (PG)
我大约一周前开始使用 Perl,现在我正在 WebWorK 中创建问题来帮助学生练习他们的派生技能。我想以尽可能省力的方式打印出 table 个问题和相应的答案框,因为这些问题将被批量生产。
到目前为止,我一直在手动输入所需的代码,并且需要进行大量的复制粘贴。当前结构示例如下:
@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 不想在不抛出语法错误的情况下接受它,这让我相信我无法在 table 构造中执行循环。
@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()
);
作为这门语言的新手,我很难将我在网上找到的任何东西应用到我的特定问题上,有人可以帮我弄清楚如何完成这个吗?
编辑:
我插入了clamp提供的代码段,结果如下:
代码:
TEXT( #71
begintable(1+scalar(@header)), #72
row(@header), #73
map {row("\[\qquad{$_}\qquad\]",ans_rule(10))} @questions; #74
endtable() #75
); #76
错误信息:
ERRORS from evaluating PG file:
syntax error at (eval 28451) line 74, at EOF
syntax error at (eval 28451) line 76, near ")
)"
TEXT()
函数需要一个值列表。您的 for 循环出现在该参数列表中,但它没有用处,因为它不会计算为值列表。
在调用 TEXT()
函数之前创建值:
@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()
);
我大约一周前开始使用 Perl,现在我正在 WebWorK 中创建问题来帮助学生练习他们的派生技能。我想以尽可能省力的方式打印出 table 个问题和相应的答案框,因为这些问题将被批量生产。
到目前为止,我一直在手动输入所需的代码,并且需要进行大量的复制粘贴。当前结构示例如下:
@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 不想在不抛出语法错误的情况下接受它,这让我相信我无法在 table 构造中执行循环。
@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()
);
作为这门语言的新手,我很难将我在网上找到的任何东西应用到我的特定问题上,有人可以帮我弄清楚如何完成这个吗?
编辑: 我插入了clamp提供的代码段,结果如下:
代码:
TEXT( #71
begintable(1+scalar(@header)), #72
row(@header), #73
map {row("\[\qquad{$_}\qquad\]",ans_rule(10))} @questions; #74
endtable() #75
); #76
错误信息:
ERRORS from evaluating PG file:
syntax error at (eval 28451) line 74, at EOF
syntax error at (eval 28451) line 76, near ")
)"
TEXT()
函数需要一个值列表。您的 for 循环出现在该参数列表中,但它没有用处,因为它不会计算为值列表。
在调用 TEXT()
函数之前创建值:
@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()
);