1

Python 3で2つのマトリックスを追加したいのですが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]]どちらが正しいかという出力が出力されます。

プログラムを機能させて、人が2つの行列を入力したときに、それらが加算されるようにする方法はありますか?私はPythonを初めて使用するので、助けていただければ幸いです:)

4

2 に答える 2

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: "))
于 2013-03-27T04:16:57.910 に答える
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()
于 2013-03-27T04:22:24.480 に答える