1

我正在研究这个功能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
4

2 回答 2

1
于 2018-10-30T10:59:29.767 回答
1
于 2018-10-30T17:02:32.353 回答