输入一个数字,例如
StudentNo = input('Please input your student number: ')
这样
StudentNo = 54456842
将其放入,然后将其分成单个数字
StudentNo = [5,4,4,5,6,8,4,2]
为了在没有获得NaN的情况下从数字中找到平均值或其他统计数据?
答案 0 :(得分:3)
您可以使用以下方法将其分解为数字
str2num(num2str(StudentNo).')
首先将StudentNo
转换为字符串,然后进行转置,使每个字符都在其自己的行上,然后我们调用str2num
将每行转换为单独的数字。
另一种选择是转换为字符串,然后减去'0'
的ASCII值,将每个字符转换为数字
num2str(StudentNo) - '0'
答案 1 :(得分:0)
输入捕获一个数字。很难知道每个学生数字的数字是多少,所以我建议逐个获取它们:
StudentNo = input('Please input your student number one by one (end with -1): ');
while StudentNo(end)~= -1
StudentNo = [StudentNo, input('Please input the next student number (end with -1): ')];
end
% remove the -1
StudentNo = StudentNo(1:end-1);
修改强>
基于@StewieGriffin:如果您有多位数的学号,请注释:
StudentNo = input('Please input the next student number: ')];
[1 2 12 13]
这会将每个号码检测为学生号码矢量中的单独条目。
答案 2 :(得分:0)
Suever的方法是一种巧妙的方法。但是,如果您不需要实际数字作为数字,并且您只需要单独的数字,那么您可以直接指定您希望数字在input
- 呼叫中作为字符串。
StudentNo = input('Please input student number: ', 's')
这里,'s'
指定输入是字符串。这样您就可以输入StudentNo
而不需要撇号。
StudentNo = input('Please input student number: ', 's')
Please input student number: 54456842
StudentNo =
54456842
现在,您可以在Suever的答案中使用这两种方法中的任何一种将其转换为单独的数字。另一种选择是在调用本身中通过'0'
简单地进行减法:
StudentNo = input('Please input student number: ', 's')-'0'
Please input student number: 54456842
StudentNo =
5 4 4 5 6 8 4 2
由于这有点难以阅读,您也可以将其作为匿名函数:
stid = @() input('Please input student number: ', 's')-'0';
并称之为:
stid()
Please input student number: 123456
ans =
1 2 3 4 5 6