【发布时间】:2015-10-14 12:51:51
【问题描述】:
如果我们写12wkd3,如何选择/过滤123为八度整数?
八度音阶示例:
A = input("A?\n")
A?
12wkd3
A = 123
12wkd3 是用户键盘输入,A = 123 是预期答案。
【问题讨论】:
-
尝试使用代码格式化,很好玩!
标签: input filter keyboard concatenation octave
如果我们写12wkd3,如何选择/过滤123为八度整数?
八度音阶示例:
A = input("A?\n")
A?
12wkd3
A = 123
12wkd3 是用户键盘输入,A = 123 是预期答案。
【问题讨论】:
标签: input filter keyboard concatenation octave
假设您正在寻找的一般形式是从用户输入中获取任意字符串,删除任何非数字,并将结果存储为整数:
A = input("A? /n",'s');
A = int32(str2num(A(isdigit(A))));
示例输出:
A?
324bhtk.p89u34
A = 3248934
澄清上面写的内容:
在输入语句中,'s' 参数导致答案存储为字符串,否则将首先由 Octave 评估。大多数输入会产生错误,其他可能会被解释为函数或变量。
isdigit(A) 为A 生成一个值的逻辑数组,其中 1 表示 0-9 数字的任何字符,否则为 0。
isdigit('a1 3 b.') = [0 1 0 1 0 0 0]
A(isdigit(A)) 将仅使用与上述逻辑数组中的 1 对应的那些值从 A 生成子字符串。
A(isdigit(A)) = 13
仍然返回一个字符串,因此您需要使用str2num() 将其转换为数字。但是,它会输出一个双精度数。所以最后要让它成为一个整数,你可以使用int32()
【讨论】: