- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在研究这个功能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/
如何将任何 Dyalog APL 值转换为可以传递给 ⍎ 的字符向量获得相同的值(value)? 预期如何: x←2 3⍴⍳6 x←1,⊂x x←x,⊂'foo'
有没有办法打开文本编辑器,输入一些 APL 代码,将其保存为文件,然后在 Dyalog 或 MicroAPLX 中打开它以执行代码?或者这就是工作空间? 最佳答案 @Tobia 已经对 APL 给出了
我几周前才开始学习 APL,所以这听起来像是一个新手问题。 让 B是一个字符串,在 APL 术语中可以是标量或向量。如果是标量,⍴B返回 null 而不是我想要的字符串长度。 B←'QR' ⍴B ⍝
在 APL 中进行任意精度(整数)算术的最简单方法是什么? 任何已知的图书馆?或者你应该“内联”操作(以及如何)? 最佳答案 Dyalog APL 在 big 中包含运算符 dfns workspac
我到处寻找一个函数来执行此操作,但给出了一个嵌套向量 A←(5 3 2) (3 9 1) 我想用 B 索引它 B ← 2 1 这样对于 A 中的第一项,将返回第二项。对于 A 的第二项,将返回 3(第
根据http://www.microapl.co.uk/apl/APL1_2.PDF ,¯12和12之间有圆函数。例如,函数1、2和3分别是sin、cos和tan .我在 this reference
APL中是否存在续行符,即表示输入尚未完成并继续解析下一行的字符? 我想要它的原因是输入一个与其形状相似的格式的数组,例如,而不是: Forecast ← 4 6 ⍴ 150 200 100 80 8
大约在 1980 年代我开始使用 APL 时,Jim Weigang 提出了一个将 APL 代码写入文件的音译方案。虽然该方案本身很可靠,但人们可能永远不想用它来编程。我记得的一个音译方案(刚找到它,
我是一名经验丰富的软件工程师,开始研究 APL,为了尽早更好地了解该语言,我想了解为什么该语言向编码人员展示了标量和向量之间的区别。据我所知,在我的学习中,这只会限制灵活性,而不会产生任何好处来弥补它
如何在 APL 中定义普适功能? 我做的是 function←{ (⊃⍣(⍬≡⍴⍵)){the function that apply to scalar}¨⍵ } 我认为应该有更好的方法来做
假设我有一个数组 N ← 0 0 0 1 1 1 0 0 1 , 我如何应用扫描 \实现数组0 0 0 1 2 3 0 0 1 ?+\N给我 0 0 0 1 2 3 3 3 4这不是我想要的。+\¨⊆
我正在尝试开始使用 APL 和任何相关的 IDE、工具、编译器等。我可能需要在本地安装。我也在网上看了APL repl,但是所有的符号似乎都很难打(我什至不知道从哪里开始)。 我想知道我需要安装的任何
我正在尝试学习 APL。以下代码片段来自http://archive.vector.org.uk/art10011550其中指出此代码就像用英语阅读“MUMMY”一样简单! R←((V⍳V)=⍳⍴V)
这是 Dyalog APL 中黄金比例的代码: 1+∘÷⍣=1 我不明白。 “1 加 compose rec 重复等于 1”没有任何意义。 最佳答案 ⍣ 的操作数是 +∘÷(左边)和 =(右边)。它的
我正在使用 Dyalog APL,但我发现某些功能在 gnu-apl 中不可用。这两个 APL 实现与所有其他 APL 实现之间是否有很大差异?最常用的 APL 编译器是什么? 最佳答案 出于所有实际
给定 APL 中的列表,我想检查每个相邻对是否有序。因此,给定 (a0, a1, ..., an),我想计算: (a0 ≤ a1) ∧ (a1 ≤ a2) ∧ .... ∧ (a[n-1] ≤ an)
我需要在 Dyalog APL 中精确工作。我知道 ⎕PP 的值设置了精度,但我无法将其增加到超过 18,因此我无法获得超过 18 位的精度,并且我需要使用大数字进行操作。有什么办法可以提高精度吗?
给定 APL 中的列表,我想检查每个相邻对是否有序。因此,给定 (a0, a1, ..., an),我想计算: (a0 ≤ a1) ∧ (a1 ≤ a2) ∧ .... ∧ (a[n-1] ≤ an)
至少有一种单字母语言(当然是 q)具有用于进程间通信的功能,这是一种在多台计算机上并行执行长时间运行的进程。这些 session 可以在同一台计算机上,也可以在不同大陆的服务器上。 使用 q,我只需启
来自 Java 和 Python 程序员,优雅而强大的 APL 问题解决方案的语法通常冗长令人困惑。我编写的代码可能看起来同样强大,但为了我的理解,我更喜欢具有良好变量名称的变量 block 。哪个是
我是一名优秀的程序员,十分优秀!