Scilab二项式拟合程序:如何获取全部用户输入数据并生成表格?
Scilab捕获全部用户输入并生成表格的解决方案
问题根源
你的代码大概率是在接收用户输入时,每次都用单个变量存储新值,覆盖了之前的输入,导致最终仅保留最后一条数据。要解决这个问题,核心是用数组累积所有输入,再将数组转为表格展示。
具体实现代码
1. 累积所有用户输入数据
先初始化空数组,在循环中把每次输入追加到数组里(这里以输入数值为例,输入-999结束):
// 初始化空数组存储所有输入 all_inputs = []; disp("请输入数据,输入-999结束输入:") while %t current_val = input("请输入数值:"); if current_val == -999 then break; // 触发结束条件 end // 将新输入追加到数组末尾 all_inputs = [all_inputs, current_val]; end
如果是成对输入(比如x和y值),可以用二维数组存储:
all_inputs = []; disp("请输入成对数据(x,y),输入0 0结束:") while %t [x, y] = input("请输入x和y值:", "(2)"); if x == 0 & y == 0 then break; end all_inputs = [all_inputs; [x, y]]; end
2. 生成表格展示全部数据
方法一:用Scilab内置table函数
直接将数组转为表格,自带表头:
// 转为列向量适配table格式 input_col = all_inputs'; // 创建表格并设置列名 data_table = table(input_col, "VariableNames", ["输入数据"]); disp("所有输入数据:") disp(data_table);
如果是二维数组(成对数据):
data_table = table(all_inputs, "VariableNames", ["X值", "Y值"]); disp("所有输入数据:") disp(data_table);
方法二:自定义文本表格
如果需要更灵活的样式,用格式化输出手动构建表格:
disp("------------------------") disp("| 序号 | 输入数据 |") disp("------------------------") for i = 1:length(all_inputs) printf("| %3d | %8.2f |\n", i, all_inputs(i)) end disp("------------------------")
关键提示
- 绝对不要用单个变量循环接收输入,必须用数组累积
- 结束输入的条件可以根据需求调整(比如输入特定字符串、达到指定输入次数)
- 后续的均值、方差计算和二项式拟合,直接基于累积的数组
all_inputs即可,不会影响原有逻辑
内容的提问来源于stack exchange,提问作者Arjun Kumar
相关产品推荐
相关产品推荐

