Class vectors — умножение двух векторов неспецифической размерности

#python #class #vector

#python #класс #вектор

Вопрос:

 class MyVector:
    def __init__(self, vector): # classic init 
        self.vector = vector 

    def get_vector(self):
        return self.vector

    def __mul__(self, other):
        for i in range(0, len(self.vector)): #cycle
           # if I did scalar_product  = (self.vector[i] * other.vector[i]) here,
           # it didn't work
           scalar_product = (self.vector[i] * other.vector[i])
        return (scalar_product)    

if __name__ == "__main__":       #just testing program
    vec1 = MyVector([1, 2, 3, 4])
    vec2 = MyVector([4, 5, 6, 7])
    print(vec1.get_vector())
    print(vec2.get_vector())
    scalar_product = vec1*vec2
    print(scalar_product) # shows only 4*7 but not others
 

Что мне нужно сделать, чтобы заставить эту программу работать? Теперь он просто умножает последние цифры, например 4 * 7, но не остальные.

Ответ №1:

Сначала вам нужно определить свой скалярный продукт:

  def __mul__(self, other):
     scalar_product = 0 # or 0.0
     for i in range(0, len(self.vector)):
         scalar_product  = self.vector[i] * other.vector[i]
     return scalar_product
 

Вы также должны возвращать объект типа MyVector

Комментарии:

1. Теперь я чувствую себя таким тупым: D