gpt4 book ai didi

validation - 如何测试字符串输入? (Dyalog APL)

转载 作者:行者123 更新时间:2023-12-03 07:49:04 26 4
gpt4 key购买 nike

我正在研究这个功能Happy练习控制流。 Happy测试一个数字是否是一个快乐的数字。我也在尝试学习错误处理。所以,我试图捕捉用户输入是否不是整数。特别是如果输入是一个字符串。为此,我尝试合并标量测试 here但我无法在编辑器上对其进行测试,因为如果我尝试输入任何不带引号的字母,我当然会得到 VALUE ERROR: Undefined name .

此外,Mastering APL 一书警告使用 Quad 进行数据输入。

测试输入是否为字符串的正确方法是什么?我假设用户将输入不带引号的字母。

(我使用的是 Dyalog APL 17.0)

(我从 here 获取了关于如何将数字拆分为数字的代码?)

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

最佳答案

更新答案

事不宜迟,这里有一个建议的解决方案:

 Happy;ok;N;N2
'Enter a Number'
ok←0
:While ~ok
N2←N←⍞ ⍝ N2=original input
ok←∧/N∊⎕D,'¯.' ⍝ allow high minus for negatives and decimal separator
(~ok)/'Please enter numeric data!'
:EndWhile
N←2⊃⎕VFI N ⍝ result of ⍞ will be text, so make it numeric
N←⍬⍴N ⍝ make it a scalar
: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 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

评论
  • 罗格朗不使用 是对的, 使用 反而。这为您提供了“未翻译”的字符串,以便您可以使用它。使用系统评估用户输入(没有错误捕获)可能会为各种攻击打开大门。 (文档 here)
  • 我用了⎕VFI (我认为这是一个特定于 Dyalog 的系统功能)验证输入。这比 更可取哪个(再次)可以打开门...(文档here])
  • 关于validation - 如何测试字符串输入? (Dyalog APL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53061129/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com