我想在python 3中添加两个matrcies,但是当我向程序中添加input
时会出现问题
这是我的代码
def addmatrix(a,b):
d=[]
n=0
while n < len (a):
c = []
k = 0
while k < len (a[0]) :
c.append(a[n][k]+b[n][k])
k += 1
n += 1
d.append (c)
return d
def main():
a = input("Enter a Matrix: ")
b = input("Enter another Matrix: ")
print (addmatrix(a,b))
main()
如果输入是
输入矩阵:[[5,6], [1,2], [2,4]]
输入另一个矩阵:[[2,3], [-6,0], [-2, 4]]
输出为[['[['],['[['],['52'],[',,'],['63'],[']]'],[ ',,'],[''],['[['],['1'',[',6'],['2,'],['] 0'],[',] '],[','],['['],['2 ['],[', - '],['42'],['],'],[']']]
但是,如果我从程序中取出input
并将其设为
def main():
a = [[5,6], [1,2], [2,4]]
b = [[2,3], [-6,0], [-2, 4]]
print (addmatrix(a,b))
main()
输出结果为[[7, 9], [-5, 2], [0, 8]]
,这是正确的。
有没有办法可以让我的程序工作,这样当一个人输入两个矩阵时,它们会加在一起?我是python的新手,所以任何帮助都将受到赞赏:)
答案 0 :(得分:3)
您必须将用户输入转换为Python对象。现在,它是一个字符串。
您可以使用eval
(如果您不知道用户将输入什么内容,则不应该使用。我可以输入__import__('os').system('rm /some/file.txt')
,Python会删除文件):
a = eval(input("Enter a Matrix: "))
或者您可以使用ast.literal_eval
,这是安全的:
from ast import literal_eval
...
a = literal_eval(input("Enter a Matrix: "))
答案 1 :(得分:0)
试试这个:
import ast
def addmatrix(a,b):
return [map(sum, zip(*x)) for x in zip(a,b)]
def main():
a = ast.literal_eval(raw_input("Enter a Matrix: "))
b = ast.literal_eval(raw_input("Enter another Matrix: "))
print addmatrix(a,b)
main()