Python 定義分?jǐn)?shù)類實(shí)現(xiàn)其基本運(yùn)算(示例代碼)
今天測試了一下分?jǐn)?shù)類,并實(shí)現(xiàn)了基本運(yùn)算,參考如下
class fraction():
def __init__(self, num, den):
'''
初始化一個(gè)分?jǐn)?shù)
:param num: 分子
:param den: 分母
'''
try:
self.num = int(str(num))
self.den = int(str(den))
except ValueError:
print("非法輸入!")
def __str__(self):
'''分?jǐn)?shù)描述'''
return f"{self.num}/{self.den}"
def __add__(self, otherFraction):
'''
分?jǐn)?shù)相加
:param otherFraction: 其它分?jǐn)?shù)
:return: 一個(gè)新的分?jǐn)?shù)
'''
newtop = self.num * otherFraction.den + self.den * otherFraction.num
newden = self.den * otherFraction.den
common = gcd(newtop, newden)
return fraction(newtop // common, newden // common)
def __sub__(self, other):
'''
分?jǐn)?shù)減法
:param other: 另一個(gè)分?jǐn)?shù)
:return: 差值
'''
newnum = self.num * other.den - self.den * other.num
newden = self.den * other.den
common = gcd(newnum, newden)
return fraction(newnum // common, newden // common)
def __mul__(self, other):
'''
分?jǐn)?shù)相乘
:param other:
:return: 乘積
'''
newnum = self.num * other.num
newden = self.den * other.den
common = gcd(newnum, newden)
return fraction(newnum // common, newden // common)
def __truediv__(self, other):
'''
分?jǐn)?shù)相除
:param other:
:return: 商
'''
newnum = self.num * other.den
newden = self.den * other.num
common = gcd(newnum, newden)
return fraction(newnum // common, newden // common)
def __eq__(self, other) -> bool:
'''
判斷兩個(gè)分?jǐn)?shù)是否相等
:param other: 另一個(gè)分?jǐn)?shù)
:return: True 相等 False 不等
'''
firstnum = self.num * other.den
secondnum = self.den * other.num
return firstnum == secondnum
def __gt__(self, other):
'''
是否大于 other
:param other:
:return: True 大于 False 不大于
'''
firstnum = self.num * other.den
secondnum = self.den * other.num
return firstnum > secondnum
def __lt__(self, other):
'''
是否小于 other
:param other:
:return: True 小于 False 不小于
'''
firstnum = self.num * other.den
secondnum = self.den * other.num
return firstnum < secondnum
def __ge__(self, other):
'''
是否大于等 other
:param other:
:return: True 大于等于 False 小于
'''
firstnum = self.num * other.den
secondnum = self.den * other.num
return firstnum >= secondnum
def __le__(self, other):
'''
是否小于等于 other
:param other:
:return: True 小于等于 False 大于
'''
firstnum = self.num * other.den
secondnum = self.den * other.num
return firstnum <= secondnum
def getNum(self):
'''返回分?jǐn)?shù)的分子'''
return self.num
def getDen(self):
'''返回分?jǐn)?shù)的分母'''
return self.den
def gcd(m, n):
'''
求最大公約數(shù)
:param m:
:param n:
:return:最大公約數(shù)
'''
while m % n != 0:
oldm, oldn = m, n
m, n = oldn, oldm % oldn
return n
#y = fraction(1, 1.2)
#print(y)
myfraction = fraction(1, 2)
myfraction1 = fraction(1, 4)
f1 = myfraction + myfraction1
print(f1)
f2 = myfraction - myfraction1
print(f2)
f3 = myfraction * myfraction1
print(f3)
f4 = myfraction / myfraction1
print(f4)
print(myfraction == myfraction1)
print(myfraction > myfraction1)
print(myfraction >= myfraction1)到此這篇關(guān)于Python 定義分?jǐn)?shù)類實(shí)現(xiàn)其基本運(yùn)算的文章就介紹到這了,更多相關(guān)Python 定義分?jǐn)?shù)類內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Django配置MySQL數(shù)據(jù)庫的完整步驟
這篇文章主要給大家介紹了關(guān)于Django配置MySQL數(shù)據(jù)庫的完整步驟,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用django具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09
如何將Python字符串轉(zhuǎn)換為JSON的實(shí)現(xiàn)方法
在本教程中,你將學(xué)習(xí)JSON的基礎(chǔ)知識(shí),它是什么,常用在哪里以及它的語法,還將看到如何在Python中將字符串轉(zhuǎn)換為JSON,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-12-12
django報(bào)錯(cuò)設(shè)置auth User的解決
本文主要介紹了django報(bào)錯(cuò)設(shè)置auth User的解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07
python email smtplib模塊發(fā)送郵件代碼實(shí)例
本篇文章給大家分享了python email smtplib模塊發(fā)送郵件的相關(guān)代碼分享,有需要的朋友參考學(xué)習(xí)下。2018-04-04
使用pycharm設(shè)置控制臺(tái)不換行的操作方法
今天小編就為大家分享一篇使用pycharm設(shè)置控制臺(tái)不換行的操作方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-01-01

