我正在研究这个功能Happy
来练习控制流。Happy
测试一个数字是否是一个快乐的数字。我也在尝试学习错误处理。所以,我试图捕捉用户输入是否不是整数。特别是如果输入是一个字符串。为此,我尝试在此处合并标量测试 但我无法在编辑器上对其进行测试,因为如果我尝试输入任何不带引号的字母,我当然会得到一个VALUE ERROR: Undefined name
.
此外,Mastering APL一书警告使用 Quad 进行数据输入。
测试输入是否为字符串的正确方法是什么?我假设用户将输入不带引号的字母。
(我使用的是 Dyalog APL 17.0)
(我从这里获取了关于如何将数字拆分为数字的代码?)
Happy
'Enter a Number'
N←⎕
N2←N
:If N<0
N←|N
'You entered'N2
'Only positive numbers can be happy'
'We will check if'N'is happy'
N2←N
:EndIf
f←10⊥⍣¯1⊢
D←f N
N←+/D×D
⍝:If 0≢⊃0⍴⊂N
⍝:OrIf N≢⌊N
⍝ 'You entered: 'N'Enter an integer'
⍝ →0
⍝:EndIf
:If N=1
'***************'
'Yes'N2'is happy!'
'***************'
:Else
:While N≠1
N←+/D×D
D←f N
N←+/D×D
'N is:'N
:If N=4
'**********************************'
'Sorry!'N2'is not a happy number'
'**********************************'
:Leave
:EndIf
:If N=1
'**********************'
'Yes!'N2'is a happy number'
'**********************'
:EndIf
:EndWhile
:EndIf