2013-03-27 65 views
1

我想在Python 3添加兩個matrcies增加兩個矩陣,但問題是當我添加input到程序我無法在python

這裏是我的代碼

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

它適用於我在Python 2.7.3 – zz3599 2013-03-27 04:15:34

+0

我正在使用python 3.也許多數民衆贊成在問題。那是誰知道什麼是錯的? – Jett 2013-03-27 04:17:01

+0

@ zz3599:OP使用Python 3. – Blender 2013-03-27 04:17:32

回答

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: ")) 
+0

我不知道用戶會輸入什麼內容。它必須是隨機的 – Jett 2013-03-27 04:19:18

+0

@Jett然後嘗試literal_eval – Patashu 2013-03-27 04:22:09

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