3

我刚刚开始使用以下猜谜游戏进行 TI-86 BASIC 编程:

:randInt(1,10)→X
:0→A
:Repeat A=X
:Disp "Guess the number"
:Input "between 1 and 10.", A
:End

我对Repeat语句的理解是该块将执行直到条件为真。就我而言,我发现该块只执行一次。这意味着A用户输入的值总是与 的随机值相同X,我很难相信。

知道我做错了什么吗?

4

2 回答 2

4

=是“等式变量赋值”,而不是等式测试

我没有 TI-86,但我很确定这是对的。

一种不太常用的将值存储到变量的方法是使用“=”运算符。编码

:A=45

与 [存储箭头] 的作用几乎相同,只是它使 A 成为“方程变量”(可用于方程求解器)而不是“实变量”。

资源

由于 A 被存入,表达式A=X将返回 A 的新值;也就是 X。因为 TI-BASIC 认为所有非零数都为真,并且 X 始终介于 1 和 10 之间,A=X所以将 A 分配给 X 并返回一个真值,从而停止循环。

正如 OP 所说,==改为使用相等比较。

于 2015-12-20T21:55:13.073 回答
1

可以使用运算符比较 TI-86 版本的 TI-BASIC 中的变量==。所以程序变成了

:randInt(1,10)→X
:0→A
:Repeat A==X
:Disp "Guess the number"
:Input "between 1 and 10.", A
:End
于 2015-12-21T09:17:24.897 回答