为了账号安全,请及时绑定邮箱和手机立即绑定

代码和答案一样,怎么出不来??

class Rational(object):

    def __init__(self, p, q):

        self.p = p

        self.q = q


    def __add__(self, r):

        return Rational(self.p * r.q + self.q * r.p, self.q * r.q)


    def __sub__(self, r):

        return Rational(self.p * r.q - self.q * r.p, self.q * r.q)


    def __mul__(self, r):

        return Rational(self.p * r.p, self.q * r.q)


    def __div__(self, r):

        return Rational(self.p * r.q, self.q * r.p)


    def __str__(self):

        g = gcd(self.p, self.q)

        return '%s/%s' % (self.p / g, self.q / g)


    __repr__ = __str__


r1 = Rational(1, 2)

r2 = Rational(1, 4)

print r1 + r2

print r1 - r2

print r1 * r2

print r1 / r2


正在回答

2 回答

问题应该出在你调用的gcd函数上,我也是小白,建议重写这个函数。附上重写的gcd:

def gcd(p,q):
   if p > q:
       m = q
   if p < q:
       m = p
   for n in range(1, m + 1):
       if p % (m-n+1) == 0 and q % (m-n+1) == 0:
           return (m-n+1) 

注意,这个函数是定义在类之外的

再附上结果:

3/4

1/4

1/8

2/1

0 回复 有任何疑惑可以回复我~

gcd是什么意思

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
python进阶
  • 参与学习       255533    人
  • 解答问题       3038    个

学习函数式、模块和面向对象编程,掌握Python高级程序设计

进入课程

代码和答案一样,怎么出不来??

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号