Python程序:定义复数对象的类
假设我们要通过定义一个复数类来执行复数任务,该类具有以下操作 –
- add():添加两个复数
- sub():从两个复数中减去
- mul():将两个复数相乘
- div():将两个复数相除
- mod():获取复数的模
复数将以(a + bi)的形式显示。 我们有两个复数,对它们执行这些操作。在类内部,我们重载add(),sub(),mul()和div()方法,以便我们可以使用运算符执行这些操作。我们还重载str()方法以正确形式打印复数。
因此,如果输入如下:c1 = 2+3i、c2 = 5-2i,则输出将是(7.00 + 1.00i)、(-3.00 + 5.00i)、(16.00 + 11.00i)、(0.14 + 0.66i)、3.61、5.39。
为了解决这个问题,我们将按照以下步骤进行-
- 带有实部re和虚部im的复杂类
- 定义函数add()。这将取o
- 返回一个新的Complex对象,其(re + o.re,im + o.im)
- 定义函数sub()。这将取o
- 返回一个新的Complex对象,其(re – o.re,im – o.im)
- 定义函数mul()。这将取o
- 返回一个新的Complex对象,其(re * o.re-im * o.im,re * o.im + im * o.re)
- 定义函数div()。这将取o
- m := o.re * o.re + o.im * o.im
- 返回一个新的复数对象,其((re * o.re + im * o.im)/m,(im * o.re – re * o.im)/m)
- 定义函数mod()。这将采取
- 返回(re * re + im * im)的平方根
- 重载str()。
- 如果im与0相同,则
- 返回用两位小数表示的re
- 如果re与0相同,则
- 返回用两位小数表示的im
- 如果im<0,则
- 返回re – im i,(re和im都用两位小数表示)
- 否则,
- 返回re + im i,(re和im都用两位小数表示)
示例
让我们看看以下实现,以更好地了解
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):
if self.im == 0:
return '%.2f' % self.re
if self.re == 0:
return '%.2fi' % self.im
if self.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