您的位置:首页 > 编程语言 > Python开发

Python求分数的加减法

2017-07-14 21:25 585 查看

使用Python编写分数的加减法

基本概念

1.1 最大公约数与最小公倍数

1.1.1 最大公约数(gcd):

较大的数除较小的数,得到整型余数

较小的数除以余数

最终得到0,返回另一个数

1.1.2 最小公倍数(lcm):

lcm=a*b/gcd(a,b)

1.2 最小公倍数与最大公约数类

#目的求lcm
class Rational1(object):
def __init__(self):#初始化程序
pass

def gcd(a,b):#判断最大公约数
if not a > b:
a,b = b,a
while b != 0 :
remider = a%b
a,b = b,remider
print("%s" %a)
return a

def lcm(a,b):#返回最小公倍数
lcm = a*b /Rational1.gcd(a,b)
return lcm

class Rational(object):#以1/3,3/5为例,输出加法

#初始化类
def __init__(self,numer,denom = 1):
print("in constuctor")
self.numer = numer
self.deom = denom

def __str__(self):
print("in str")
return str(self.numer) + "/" + str(self.deom)

def __repr__(self):
print("in repr")
return self.__str__()

#定义分数的加法
def __add__(self, f):
print(" in add")
thelcm = int(Rational1.lcm(self.deom,f.deom))
numeratorSum = int((thelcm/self.deom*self.numer)+(thelcm/f.deom*f.numer))
return Rational(numeratorSum,thelcm)

#定义分数的减法
def __sub__(self, f):
print("in sub")
thelcm = Rational1.lcm(self.deom,f.deom)
numeratorSub = (thelcm/self.deom*self.numer)-(thelcm/f.deom*f.numer)
return Rational(numeratorSub,thelcm)

onehalf = Rational(1,3)
threefive = Rational(3,5)
thesum = onehalf + threefive
print(thesum)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  class 对象 python