如何允许用户输入向量而不是字符串?

时间:2016-11-10 11:57:44

标签: python string input

我正在尝试让我的程序允许用户使用python的内置input()函数输入格式(x,y,z)的向量。

如果在python中正常输入而没有使用input()函数,它会分别索引每个向量。例如,

>>> z = (1,2,3), (4,5,6), (7,8,9)
>>> z[1]
(4, 5, 6)

但是当我尝试使用输入功能时,我遇到了以下问题。

>>> z = input('What are the vectors?  ')
What are the vectors?  (1,2,3), (4,5,6), (7,8,9)
>>> z[1]
'1'

为什么使用输入函数将它变成一个字符串,有没有办法解决这个问题?

由于

3 个答案:

答案 0 :(得分:2)

在Python 3中,input总是返回一个字符串。你需要转换字符串。对于此类输入,我建议使用模块liter_eval中的ast

import ast
vectors = ast.literal_eval('(1,2,3), (4,5,6), (7,8,9)')
vectors[1]     #(4, 5, 6)

答案 1 :(得分:0)

在您的示例中,z只是用户输入的字符串。

这个字符串是:"(1,2,3), (4,5,6), (7,8,9)"所以第二个元素z[1]只是给你"1"

如果你想要一个实际的矢量对象,你必须编写代码来解析用户输入的字符串。例如,您可以根据括号分隔并单独转换数字。

希望这有帮助!

答案 2 :(得分:-2)

你可以使用带输入功能的eval来获得与第一个相同的功能。

eval(input('Please enter the vector')