# 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)
import sys
print(sys.version)
可以查看python版本不是3.X哦
__truediv__方法改为__div__就可以了,线上编辑器Python版本的问题,Python3.x中__truediv__没问题的
线上编译器的版本不是Python3.X,除法还是和2.X版本一样只能取整,所以没有__truediv__这个正常除法,只有__div__这个除法,然而这个除法如果整数和整数除只能向下取整,只有浮点数和浮点数或者浮点数和整数相除才会取小数点之后的数