定义复数对象的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()。这将接收一个
  • 返回一个新的 Complex 对象,其值为 (re + o.re, im + o.im)
  • 定义一个函数 sub()。这将接收一个
  • 返回一个新的 Complex 对象,其值为 (re - o.re, im - o.im)
  • 定义一个函数 mul()。这将接收一个
  • 返回一个新的 Complex 对象,其值为 (re * o.re -im * o.im, re * o.im + im * o.re)
  • 定义一个函数 div()。这将接收一个
  • m := o.re * o.re + o.im * o.im
  • 返回一个新的 Complex 数对象,其值为 ((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

更新于:2021年10月12日

5K+ 次浏览

启动您的职业生涯

完成课程获得认证

开始学习
广告