问答详情
源自:4-4 Python类的数学运算

为什么除(__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)


提问者:慕沐1427948 2020-09-26 15:33

个回答

  • ChaosYX
    2021-11-12 09:47:47

    import sys

    print(sys.version)

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

    下载视频          

  • HO_ml
    2020-10-19 10:19:30

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

  • 慕粉6398034
    2020-09-30 14:28:44

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