为复数对象定义类的 Python 程序
假设我们想通过定义一个复数类来完成复数任务,以下操作-
add()将两个复数相加
sub()减去两个复数
mul()将两个复数相乘
div()将两个复数相除
mod()得到复数的模数
复数将以(a+bi)的形式显示。我们有两个复数,将对它们执行这些操作。在类中,我们重载add(),sub(),mul()和div()方法,使我们可以使用运营商执行的操作。我们还重载__str__()了以正确形式打印复数的方法。
所以,如果输入像c1=2+3ic2=5-2i,那么输出将是(7.00+1.00i),(-3.00+5.00i),(16.00+11.00i),(0.14+0.66i))、3.61、5.39。
示例
让我们看下面的实现来更好地理解
from math import sqrt class Complex: def __init__(self, real, imag): self.re= real self.im= imag def __add__(self, o): return Complex(self.re+o.re, self.im+o.im) def __sub__(self, o): return Complex(self.re-o.re, self.im-o.im) def __mul__(self, o): return Complex(self.re*o.re-self.im*o.im,self.re*o.im+self.im* o.re) def __truediv__(self, o): m =o.re*o.re+o.im* o.im return Complex((self.re *o.re+self.im* o.im)/m, (self.im *o.re-self.re* o.im)/m) def __str__(self): ifself.im== 0: return '%.2f' % self.re ifself.re== 0: return '%.2fi' % self.im ifself.im< 0: return '%.2f - %.2fi' % (self.re, -self.im) else: return '%.2f + %.2fi' % (self.re, self.im) def mod(self): return sqrt(self.re*self.re+self.im*self.im) def solve(comp1, comp2): print(comp1 + comp2) print(comp1 - comp2) print(comp1 * comp2) print(comp1 / comp2) print('%.2f' % comp1.mod()) print('%.2f' % comp2.mod()) comp1 = Complex(2, 3) comp2 = Complex(5, -2) solve(comp1, comp2)
输入
2, 3 5, -2输出结果
7.00 + 1.00i -3.00 + 5.00i 16.00 + 11.00i 0.14 + 0.66i 3.61 5.39