我的代码需要一些帮助! 这是一些指示:
v。 mul (其他):如果其他属于Vector类型,则返回点> v和其他的乘积,是>的乘积之和。 相应的组件;如果其他组件是>,则引发断言错误。 不同的维度。如果other是int或float类型,则返回new 由v与其他的标量乘法产生的向量。如果>其他的类型不是Vector,int或float,引发了一个 断言>错误。
=============================================== =========================
以下是代码:
>>> v1 = Vector([2, 3, 4]); v2 = Vector([1, 2, 3])
>>> print(v2 * 2); print(2 * v2)
Vector: [2, 4, 6]
Vector: [4, 8, 12]
>>> print(v1 * v2); print(v2 * v1)
128
1376
以下是代码中的一些输出:
>>> v1 = Vector([2, 3, 4]); v2 = Vector([1, 2, 3])
>>> print(v2 * 2); print(2 * v2)
Vector: [2, 4, 6]
Vector: [2, 4, 6]
>>> print(v1 * v2); print(v2 * v1)
20
20
但是,正确的输出是:
class Post < ActiveRecord::Base
belongs_to :author
end
class Author < ActiveRecord::Base
has_many :posts
def name_with_initial
"#{first_name.first}. #{last_name}"
end
end
所以,我想知道问题是什么以及如何解决它。 谢谢!
答案 0 :(得分:0)
此方法提供所需的输出:
def __mul__(self, other):
if isinstance(other, self.__class__):
if len(self.vec) != len(other.vec):
raise AssertionError('Vectors have different lengths '
'of {} and {}'.format(len(self.vec), len(other.vec)))
return sum(x * y for x, y in zip(self.vec, other.vec))
elif isinstance(other, (int, float)):
return Vector([x * other for x in self.vec])
else:
raise AssertionError('Cannot use type ' + str(type(other)))