為什么除(__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)
2021-11-12
import sys
print(sys.version)
可以查看python版本不是3.X哦
2020-10-19
__truediv__方法改為__div__就可以了,線上編輯器Python版本的問題,Python3.x中__truediv__沒問題的
2020-09-30
線上編譯器的版本不是Python3.X,除法還是和2.X版本一樣只能取整,所以沒有__truediv__這個正常除法,只有__div__這個除法,然而這個除法如果整數(shù)和整數(shù)除只能向下取整,只有浮點數(shù)和浮點數(shù)或者浮點數(shù)和整數(shù)相除才會取小數(shù)點之后的數(shù)