2013-12-17 67 views
0

我在寫代碼來計算一些矢量操作我scalarproduct腳本不起作用:載體腳本3

Traceback (most recent call last): 
    File "C:\Dokumente und Einstellungen\A-PC\Desktop\Kopie von vektorrechnung.py", line 28, in <module> 
    D = D + my_list1[i] * my_list2[i] #this part prints an Error-Code 
TypeError: can only concatenate list (not "int") to list 

第一個塊是沒有問題的,我覺得這個問題是JSON調用。我不明白,爲什麼第一塊工程和第二塊工程都失敗了。是不是在json創建的列表上定義了mupliplication?

這裏是我的代碼:

import json 

str_list1 = input("Geben Sie den 1. Vektor in der Form [x, y, z] ein: ") #enter 3 coordinates 
my_list1 = json.loads(str_list1) #build vector as list in R3 
print(my_list1) 

str_list2 = input("Geben Sie den 2. Vektor in der Form [x, y, z] ein: ")# "" 
my_list2 = json.loads(str_list2) #"" 
print(my_list2) 

print("Welche Berechnung möchten Sie ausführen ?") #choose case 
print ("[v]ektoraddition") #vector addition 
print ("[s]kalarprodukt") #scalarproduct 
Fall = input() # input first char 

if Fall == "v": #when input = "v" 
    C=[] 

    for i in range(3): 
     C+=[my_list1[i] + my_list2[i]] 
print("Das Ergebnis lautet: ") 
print(C) #this part works 

elif Fall == "s": #when input = "s" 
D=[] 

    for i in range(3): 
     D = D + my_list1[i] * my_list2[i] #this part prints an Error-Code 

print("Das Skalarprodukt beträgt: ") 
print(D) 
else: 
    print("Ungültiger Eingabewert") 
+0

考慮C的'的區別+ = [my_list1 [I] + my_list2 [I]'(它增加了兩個列表)和'D = D + my_list1 [i] * my_list2 [i]',在乘法結果的周圍沒有'[]',它增加了列表和乘法結果。您可能在前面的行中表示'D = 0'而不是'D = []'。 –

+0

是的,這是空的標量不是空矢量感謝 – Anzzi

回答

1

在你的代碼的問題是,作爲錯誤說,你正在試圖連接具有一個int列表。只有一個列表可以與另一個列表連接。如果你想添加的元素,那麼你就需要使用.append(..)功能

for i in range(3): 
    D.append(my_list1[i] * my_list2[i]) 

print(D) 

從你的代碼,我可以做出來,你正在嘗試做兩個列表之間的點積。在這種情況下,你可以做sum(D)如上,或@Steve在註釋中說,這樣做如下:

D = 0 
for i in range(3): 
    D += my_list1[i] * my_list2[i] 

print D