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

为什么除(__truediv__)不行,加,减,乘都可以

# Enter a code

class Rational(object):

    def __init__(self, p, q):

        self.p = p

        self.q = q

#add    

    def __add__(self, r):

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

#sub

    def __sub__(self,r):

        if self.p * r.q > self.q * r.p:

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

           

        if self.q * r.p > self.p * r.q:

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

            

#mul

    def __mul__(self,r):

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

        

    

#div

    def __truediv__(self,r):

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

       

        

        

    def __repr__(self):

        return '{}/{}'.format(self.p,self.q)




#example    

r1 = Rational(1,2)

r2 = Rational(2,3)


#add

print(r1 + r2)


#sub

print(r1 - r2)


#mul

print(r1 * r2)

print(r1 / r2)


正在回答

3 回答

import sys

print(sys.version)

可以查看python版本不是3.X哦

下载视频          
0 回复 有任何疑惑可以回复我~

__truediv__方法改为__div__就可以了,线上编辑器Python版本的问题,Python3.x中__truediv__没问题的

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

线上编译器的版本不是Python3.X,除法还是和2.X版本一样只能取整,所以没有__truediv__这个正常除法,只有__div__这个除法,然而这个除法如果整数和整数除只能向下取整,只有浮点数和浮点数或者浮点数和整数相除才会取小数点之后的数

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

举报

0/150
提交
取消

为什么除(__truediv__)不行,加,减,乘都可以

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信