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

Python 如何允许用户输入向量而不是字符串?,python,string,input,Python,String,Input,我试图让我的程序允许用户使用python内置的input()函数输入形式(x,y,z)的向量 如果在python中正常输入而不使用input()函数out,则会分别为每个向量编制索引。比如说, >>> z = (1,2,3), (4,5,6), (7,8,9) >>> z[1] (4, 5, 6) 但是当我尝试使用输入函数时,我遇到了以下问题 >>> z = input('What are the vectors? ') What are

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

如果在python中正常输入而不使用input()函数out,则会分别为每个向量编制索引。比如说,

>>> 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'
为什么使用输入函数会将其转换为字符串?有没有办法解决这个问题


谢谢在Python3中,
input
总是返回一个字符串。您需要转换字符串。对于这种类型的输入,我建议使用模块ast中的
l\u eval

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

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

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

如果您想要一个实际的向量对象,您必须编写代码来解析用户输入的字符串。例如,可以基于括号进行定界,并分别转换数字


希望这有帮助

您可以使用eval with input函数来获得与第一个相同的结果

eval(input('Please enter the vector')

用户键入组成字符串的字符。由程序员来解释这些字符串。建议使用无防护的
eval
是危险的。在编程生涯的早期,程序员需要意识到像
eval
这样的结构的危险。看,谢谢,我也是Python新手。我不知道Python3就是这样的。不过,ast.literal_eval()函数完全解决了我的问题。非常感谢您的帮助。@Kyle如果您有Python 2的经验,Python 3的
input()
基本上与Python 2的
raw\u input()
相同。