2013-12-17 4 views
0

Я пишу код, чтобы вычислить некоторые вектор-операцию моего scalarproduct скрипт не работает:векторный скрипт в Python 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 вызов , Я не понимаю, почему первый блок работает, а второй не удается. Является ли mupliplication не определена в списках, созданных json?

вот мой код:

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 [я] + my_list2 [я]]' (который добавляет два списка) и 'D = D + my_list1 [i] * my_list2 [i]', без '[]' вокруг результата умножения, который добавляет список и результат умножения. Вероятно, вы имеете в виду 'D = 0' вместо' D = [] 'в более ранней строке. –

+0

да, это он пустой скаляр, а не пустой вектор – Anzzi

ответ

1

Проблема в вашем коде, как говорит ошибка, вы пытаетесь объединить список с междунар. Только список может быть объединен с другим списком. Если вы хотите добавить элементы, то вам нужно будет использовать функцию .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 
Смежные вопросы