python分数的四则运算

适用于初学着看看,没有很深入的知识与语法,大神可以越过。

代码

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

#当遇到这些+-*/符号,时候会对应python语法,上面已经重写了相应的语法,会按照我们的规则进行。

第一次在简书上发布文章,python也是近期才开始学习,很多内部机制不是很了解,只是宽泛的应用了一下学习的知识。有错误的地方,希望大家指正!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容