让用户在Scilab中一次输入多个值

时间:2016-07-02 17:19:15

标签: user-input scilab

我希望用户输入4点的坐标,例如(xa,ya),(xb,yb),(xc,yc),(xd,yd),但一次全部输入。我用了这段代码:

  

xa = input(“输入节点1的x坐标:”)

     

ya = input(“输入节点1的y坐标:”)

     

xb = input(“输入节点2的x坐标:”)

     

yb = input(“输入节点2的y坐标:”)

     

xc = input(“输入节点3的x坐标:”)

     

yc = input(“输入节点3的y坐标:”)

     

xd = input(“输入节点4的x坐标:”)

     

yd = input(“输入节点4的y坐标:”)

但在这种情况下,我只能为yd提供输入值。 如何让用户一次输入所有值?

2 个答案:

答案 0 :(得分:0)

您可以将输入作为字符串使用strsplitevstr进行解析。这是一个简单的例子,取一些数字并返回它们的总和。

str = input("Enter a space-separated list of numbers: ", "string")
v = evstr(strsplit(str, " "))
disp(sum(v), "The sum:")

在您的情况下,输入可能包含括号,逗号和空格,因此它被正则表达式拆分:/[ ,;()]+/表示空格,括号,逗号和分号的任何序列(以防万一)。用户可能在输入数据时出错,因此执行基本检查:结果应该有8个数字。

need_input = %t
while need_input
  str = input("Enter four pairs of coordinates: ", "string")
  v = evstr(strsplit(str, "/[ ,;()]+/"))
  need_input = (length(v) <> 8)
end
coords = matrix(v, 2, 4)

输入(2,4), (-3, 4), (-9,5), (0, 1)将导致coords矩阵

2.  - 3.  - 9.    0.  
4.    4.    5.    1. 

答案 1 :(得分:0)

您也可以使用mscanf功能 mprintf(“输入四对坐标:\ n”) coords = mscanf(“%f%f%f%f%f%f%f%f”) 用户必须输入以空格分隔的8个值

或只是输入 str = input(“输入四对坐标:”,“字符串”) COORDS = evstr( “[” + STR + “]”) 用户必须输入以空格分隔的8个值