莫名其妙的语法错误



在我尝试定义 n 维 Vector 类时,我在定义乘法时遇到了一个"语法"错误,我真的不知道如何解决......

class Vector:
def __init__(self, v):
    if len(v)==0: self.v = (0,0)
    else: self.v = v
 #bunch of functions in between here....
 def __mul__(self, other):
    if type(other) == Vector:
        if len(self.v) != len(other.v):
            raise AssertionError
    dotprod = 0
    for i in range(len(self.v)):
        dotprod += self.v[i+1] * other.v[i+1]
    return dotprod
elif type(other) in [int, float]:
    new = []
    for component in self.v:
        new.append(component*other)
    return Vector(tuple(new))
else:
    raise AssertionError

错误如下:

File "<ipython-input-52-50a37fd0919a>", line 40
elif type(other) in [int, float]:
   ^
SyntaxError: invalid syntax

我已经多次玩弄缩进和 elif 语句,但我真的看不出问题是什么。

提前谢谢。

问题肯定是缩进错误。我认为这就是您的意图:

def __mul__(self, other):
    if type(other) == Vector:
        if len(self.v) != len(other.v):
            raise AssertionError
        dotprod = 0
        for i in range(len(self.v)):
            dotprod += self.v[i+1] * other.v[i+1]
        return dotprod
    elif type(other) in [int, float]:
        new = []
        for component in self.v:
            new.append(component*other)
        return Vector(tuple(new))
    else:
        raise AssertionError

这使elifif处于相同的缩进级别。

最新更新