写一个函数来乘以复数

Writing out a function to multiply complex numbers

在尝试编写将两个复数相乘的代码时,我一直 运行 遇到问题。我首先创建了一个名为 Complex 的简单 class:

class Complex:
    def __init__(self,real,imag):
        self.real = real   
        self.imag = imag


    def multiply(self, d):
        self.real = (self.real * d.real) - (self.imag * d.imag) 
        self.imag = (self.imag * d.real) + (self.real * d.imag)

    def __str__(self): 
        if self.imag > 0:
            return str(self.real) + " + " + str(self.imag) + "i"
        elif self.imag == 0:
            return str(self.real)
        else:
            return str(self.real) + " - " + str(-self.imag) + "i"

其中self.real是实部,self.imag是虚部。当我 运行

z = Complex(3,4)
x = Complex(2,3)
z.multiply(x)
print(z,x)

结果应该是 -6 + 17i,但它输出 -6 - 10i。发生了什么?与乘法函数中的self.imag部分有关吗?

我试着通过阅读我的代码来手工完成,我得到了正确的答案。有什么明显的我遗漏的东西吗?

您在 multiply 方法的第一行修改 self.real,然后在第二行使用修改后的值。在一行中完成两项作业,即:

self.real, self.imag = (self.real * d.real) - (self.imag * d.imag), (self.imag * d.real) + (self.real * d.imag)