适用于初学着看看,没有很深入的知识与语法,大神可以越过。
代码
class Arithmetic(object):
def __init__(self, p, q):
self.p = p
self.q = q
//初始化四则运算分子与分母,p为分子,q为分母
def __add__(self, r):
return Arithmetic(self.p * r.q + self.q * r.p, self.q * r.q)
//加法运算
def __sub__(self, r):
return Arithmetic(self.p*r.q-self.q*r.p,self.q*r.q)
//减法运算
def __mul__(self, r):
return Arithmetic(self.p*r.p,self.q*r.q)
//乘法运算
def __div__(self, r):
return Arithmetic(self.p*r.q,self.q*r.p)
//除法运算
def __str__(self):
if self.p >self.q:
count = self.q
else:
count = self.p
def f(c):
num = 0
for n in range(0,c-1):
a = self.p/(c-n)
b = self.q/(c-n)
if a*(c-n) == self.p and b*(c-n) == self.q:
num = 1
self.p,self.q = self.p/(c-n),self.q/(c-n)
c = c/(c -n)
break;
if num == 1:
return f(c)
else:
if self.q == 1:
return '%s'%(self.p)
return '%s/%s'%(self.p,self.q)
return f(count)
//这里定义一个f()函数为了对计算结果分数进行约分最简形式。
里面对函数使用内部循环调用。
注意函数不能修改相对于他的全局变量,
这一点自己也是试了出错,才发现的,具体原因还不清楚。
__repr__ = __str__
r1 = Arithmetic(9, 10)
r2 = Arithmetic(1, 5)
print r1 + r2
print r1 - r2
print r1 * r2
print r1 / r2
网友评论