Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรมสร้างคลาสสำหรับจำนวนเชิงซ้อนใน Python

สมมติว่าเราต้องการทำงานกับจำนวนเชิงซ้อนโดยการกำหนดคลาสจำนวนเชิงซ้อนพร้อมการดำเนินการต่อไปนี้:

  • add() บวกจำนวนเชิงซ้อนสองจำนวน
  • sub() ลบจำนวนเชิงซ้อนสองจำนวน
  • mul() คูณจำนวนเชิงซ้อนสองจำนวน
  • div() หารจำนวนเชิงซ้อนสองจำนวน
  • mod() หาค่าสัมบูรณ์ (modulus) ของจำนวนเชิงซ้อน

จำนวนเชิงซ้อนจะแสดงในรูปแบบ (a + bi) เรามีจำนวนเชิงซ้อนสองจำนวน จะทำการดำเนินการเหล่านี้ ภายในคลาสเราจะ overload เมธอด __add__, __sub__, __mul__, __div__ เพื่อให้ใช้ตัวดำเนินการได้โดยตรง และ overload __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

ขั้นตอนการแก้ปัญหา

  • กำหนดคลาส Complex มีส่วนจริง re และส่วนจินตภาพ im
  • __add__(self, o): คืนค่า Complex(re + o.re, im + o.im)
  • __sub__(self, o): คืนค่า Complex(re - o.re, im - o.im)
  • __mul__(self, o): คืนค่า Complex(re*o.re - im*o.im, re*o.im + im*o.re)
  • __truediv__(self, o): m = o.re^2 + o.im^2 คืนค่า Complex((re*o.re + im*o.im)/m, (im*o.re - re*o.im)/m)
  • mod(self): คืนค่า sqrt(re^2 + im^2)
  • __str__(): จัดรูปแบบการแสดงผล 2 ทศนิยม

ตัวอย่างโค้ด

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)
        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