/
7-36_复数四则运算 (15).py
51 lines (43 loc) · 3.45 KB
/
7-36_复数四则运算 (15).py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
class Complex(object):
def __init__(self, real, image):
self.real = real
self.image = image
def __add__(self, other):
r = self.real + other.real
i = self.image + other.image
return Complex(r, i)
def __sub__(self, other):
r = self.real - other.real
i = self.image - other.image
return Complex(r, i)
def __mul__(self, other):
r = self.real*other.real - self.image*other.image
i = self.real*other.image + other.real*self.image
return Complex(r, i)
def __div__(self, other):
di = (other.real**2 + other.image**2)
r = (self.real*other.real + self.image*other.image) / di
i = (self.image*other.real - self.real*other.image) / di
return Complex(r, i)
def __str__(self):
r, i = self.real, self.image
if -0.05 <= self.image <= 0.05:
s = '%.1f' % self.real
elif -0.05 <- self.real <= 0.05:
s = '%.1fi' % self.image
elif self.image < 0:
s = '%.1f%.1fi' % (self.real, self.image)
else:
s = '%.1f+%.1fi' % (self.real, self.image)
return s
def Expression(self):
if self.image < 0:
return '%.1f%.1fi' % (self.real, self.image)
else:
return '%.1f+%.1fi' % (self.real, self.image)
a1, b1, a2, b2 = map(float, raw_input().split())
a, b = Complex(a1, b1), Complex(a2, b2)
print '(%s) + (%s) = %s' % (a.Expression(), b.Expression(), a+b)
print '(%s) - (%s) = %s' % (a.Expression(), b.Expression(), a-b)
print '(%s) * (%s) = %s' % (a.Expression(), b.Expression(), a*b)
print '(%s) / (%s) = %s' % (a.Expression(), b.Expression(), a/b)