適用于初學(xué)著看看派殷,沒(méi)有很深入的知識(shí)與語(yǔ)法,大神可以越過(guò)墓阀。
代碼
class Arithmetic(object):
def __init__(self, p, q):
self.p = p
self.q = q
//初始化四則運(yùn)算分子與分母毡惜,p為分子,q為分母
def __add__(self, r):
return Arithmetic(self.p * r.q + self.q * r.p, self.q * r.q)
//加法運(yùn)算
def __sub__(self, r):
return Arithmetic(self.p*r.q-self.q*r.p,self.q*r.q)
//減法運(yùn)算
def __mul__(self, r):
return Arithmetic(self.p*r.p,self.q*r.q)
//乘法運(yùn)算
def __div__(self, r):
return Arithmetic(self.p*r.q,self.q*r.p)
//除法運(yùn)算
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)
//這里定義一個(gè)f()函數(shù)為了對(duì)計(jì)算結(jié)果分?jǐn)?shù)進(jìn)行約分最簡(jiǎn)形式斯撮。
里面對(duì)函數(shù)使用內(nèi)部循環(huán)調(diào)用经伙。
注意函數(shù)不能修改相對(duì)于他的全局變量,
這一點(diǎn)自己也是試了出錯(cuò)勿锅,才發(fā)現(xiàn)的帕膜,具體原因還不清楚。
__repr__ = __str__
r1 = Arithmetic(9, 10)
r2 = Arithmetic(1, 5)
print r1 + r2
print r1 - r2
print r1 * r2
print r1 / r2