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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Django配置MySQL數(shù)據(jù)庫的完整步驟
這篇文章主要給大家介紹了關(guān)于Django配置MySQL數(shù)據(jù)庫的完整步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(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-12django報(bào)錯(cuò)設(shè)置auth User的解決
本文主要介紹了django報(bào)錯(cuò)設(shè)置auth User的解決,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07python email smtplib模塊發(fā)送郵件代碼實(shí)例
本篇文章給大家分享了python email smtplib模塊發(fā)送郵件的相關(guān)代碼分享,有需要的朋友參考學(xué)習(xí)下。2018-04-04在Python中通過getattr獲取對(duì)象引用的方法
今天小編就為大家分享一篇在Python中通過getattr獲取對(duì)象引用的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-01-01使用pycharm設(shè)置控制臺(tái)不換行的操作方法
今天小編就為大家分享一篇使用pycharm設(shè)置控制臺(tái)不換行的操作方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-01-01