我希望用户输入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提供输入值。 如何让用户一次输入所有值?
答案 0 :(得分:0)
您可以将输入作为字符串使用strsplit
和evstr
进行解析。这是一个简单的例子,取一些数字并返回它们的总和。
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个值