我在程序中使用了input()来将输入转换为列表类型,但我读到我应该使用raw_input()代替。
我试图让用户以(4,4),(2,5),(1,6)的形式输入向量 使用input()就可以了。
我用过:
vectors = list(input('enter vectors\n'))
将其更改为raw_input()后,我得到一个包含str
中所有元素的列表'(' '4' ',' '4' ')' ',' '(' '2' ',' '5' ')' ',' '(' '1' ',' '6' ')'
如何将输入转换为我将获得的列表,就像我使用input()一样? 我应该回去使用input()吗?
答案 0 :(得分:0)
假设您以1,2
格式输入数据,这可以完成您的工作:
vectors = []
print ('enter vectors')
while True:
a = raw_input('')
if a == 'q':
break
else:
vectors.append(tuple(int(c) for c in a.split(',')))
print vectors
答案 1 :(得分:0)
您在raw_input
之后切换到input
是正确的。正如this问题中所述,input
需要raw_input
而不是执行eval
,如果来自不受信任的来源,这通常是不好的做法和不安全。
要在使用raw_input
时实现您的目标,您可以使用ast
模块
import ast
vector = raw_input('Enter Vector:')
vector = list(ast.literal_eval(vector))
print vector
>>> [(4, 4), (2, 5), (1, 6)]