【问题标题】:I'm having trouble adding two matrices in python我在 python 中添加两个矩阵时遇到问题
【发布时间】:2013-03-27 04:11:36
【问题描述】:

我想在 python 3 中添加两个矩阵,但是当我在程序中添加 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 新手,所以任何帮助将不胜感激:)

【问题讨论】:

  • 它在 Python 2.7.3 上对我来说很好
  • 我正在使用 python 3。也许这就是问题所在。有谁知道怎么回事?
  • @zz3599:OP 正在使用 Python 3。
  • 仅供参考:在 python 中处理矩阵时,最好使用numpy,它专为快速简单的矩阵计算而设计。不过,这看起来可能是家庭作业,在这种情况下请忽略我:)
  • @JamesPorter 是的,不幸的是。我不能使用我们还没学过的numpy。哈哈

标签: isa-swizzling


【解决方案1】:

您必须将用户输入转换为 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: "))

【讨论】:

  • 我不知道用户会输入什么。它必须是随机的
  • @Jett 然后试试literal_eval
【解决方案2】:

试试这个:

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()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多