重复语句总是恰好迭代一次

Repeat statement always iterates exactly once

我刚开始使用以下猜谜游戏进行 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 的随机值相同,我很难相信。

知道我做错了什么吗?

= 是 "equation-variable assignment",不是等式测试

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

A less commonly used method of storing a value to a variable is with the "=" operator. The code

:A=45

does pretty much the same thing as [the store arrow], except that it makes A an "equation variable" (Which can be used in the equation solver) instead of a "real variable".

Source

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

正如 OP 所说,使用 == 代替相等比较。

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

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