Python 如何允许用户输入向量而不是字符串?
我试图让我的程序允许用户使用python内置的input()函数输入形式(x,y,z)的向量 如果在python中正常输入而不使用input()函数out,则会分别为每个向量编制索引。比如说,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
>>> 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()
相同。