我怎样才能改进这个"math problem generator"?



我正在为一个朋友和他的儿子编写一个简单的数学问题生成器。

程序应该使用+ &-从0-20的可能结果范围

因为我刚开始编程,我查找了一些适合这个任务的语言。我最终使用了JS,这是我目前得到的代码。

它似乎运行良好,除了我的"if - loop"如果生成的问题的值不是>= 0,则取消问题的提示。

function aufgabe() {
var a = Math.floor(Math.random() * 10) + 1;
var b = Math.floor(Math.random() * 10) + 1;
var op = ["+","-"][Math.floor(Math.random()*2)];
var ergebnis = eval(a + op + b);
if(ergebnis >= 0) {
return prompt("Wie viel ist " + a + " " + op + " " + b + "?") == eval( a + op + b);
} else {
ergebnis;
}
}
var questions = [aufgabe()],
total = questions.length,
correct = questions.filter(Boolean).length;
alert( "Du hast "+correct+"/"+total+" Aufagen richtig gelöst!"); 

我认为您在while循环之后定义了一个数学问题,该问题将解析为>=0

因此,一旦ergebnis被定义并保持正值,while循环将结束,prompt将显示。

查找while文档

function aufgabe(){
var a,b,op,ergebnis;

while(!ergebnis || ergebnis<0){

a = Math.floor(Math.random() * 10) + 1;
b = Math.floor(Math.random() * 10) + 1;
op = ["+","-"][Math.floor(Math.random()*2)];
ergebnis = eval(a + op + b);
}

return prompt("Wie viel ist " + a + " " + op + " " + b + "?") == eval( a + op + b);

}
var questions = [aufgabe()],
total = questions.length,
correct = questions.filter(Boolean).length;
alert( "Du hast "+correct+"/"+total+" Aufagen richtig gelöst!");

编写一个函数生成具有最小值和最大值的数字。

下面有一个
getRandomInt = (min, max) => {
min = Math.ceil(min);
max = Math.floor(max);
return Math.floor(Math.random() * (max - min + 1)) + min;
};

您可以使用函数作为getRandomInt(0,20)来生成操作数a。操作数b将由操作数b和操作决定。

这意味着在生成操作数b之前,您应该已经有了操作符。如果操作为'-',则操作数b将为getRandomInt(0, a)。

这样整个操作的最小值就是0。

如果你需要更多的说明。你可以问

更新:使用

进行测试的完整示例
function aufgabe(){
var a,b,op,ergebnis;


a = getRandomInt(0, 20);
op = ["+","-"][Math.floor(Math.random()*2)];
b = getRandomInt(0, op === "-"? a : 20)
ergebnis = eval(a + op + b);

return prompt("Wie viel ist " + a + " " + op + " " + b + "?") == eval( a + op + b);

}
function getRandomInt(min, max) {
min = Math.ceil(min);
max = Math.floor(max);
return Math.floor(Math.random() * (max - min + 1)) + min;
};
var questions = [aufgabe()],
total = questions.length,
correct = questions.filter(Boolean).length;
alert( "Du hast "+correct+"/"+total+" Aufagen richtig gelöst!"); 

最新更新