我正在尝试让我的程序允许用户使用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'
为什么使用输入函数将它变成一个字符串,有没有办法解决这个问题?
由于
答案 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')