Python 定義分?jǐn)?shù)類實(shí)現(xiàn)其基本運(yùn)算(示例代碼)
今天測(cè)試了一下分?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)文章
淺析PandasAI連接LLM對(duì)MySQL數(shù)據(jù)庫進(jìn)行數(shù)據(jù)分析
這篇文章主要為大家詳細(xì)介紹了PandasAI如何連接LLM對(duì)MySQL數(shù)據(jù)庫進(jìn)行數(shù)據(jù)分析,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2025-08-08
pytorch通過自己的數(shù)據(jù)集訓(xùn)練Unet網(wǎng)絡(luò)架構(gòu)
Unet是一個(gè)最近比較火的網(wǎng)絡(luò)結(jié)構(gòu)。它的理論已經(jīng)有很多大佬在討論了。本文主要從實(shí)際操作的層面,講解如何使用pytorch實(shí)現(xiàn)unet圖像分割2022-12-12
python 同時(shí)運(yùn)行多個(gè)程序的實(shí)例
今天小編就為大家分享一篇python 同時(shí)運(yùn)行多個(gè)程序的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-01-01
Python標(biāo)準(zhǔn)庫urllib2的一些使用細(xì)節(jié)總結(jié)
這篇文章主要介紹了Python標(biāo)準(zhǔn)庫urllib2的一些使用細(xì)節(jié)總結(jié),本文總結(jié)了Proxy 的設(shè)置、Timeout 設(shè)置、Redirect、Cookie等細(xì)節(jié)的使用,需要的朋友可以參考下2015-03-03
Python如何批量處理經(jīng)緯度數(shù)據(jù)并生成位置信息
這篇文章主要介紹了Python如何批量處理經(jīng)緯度數(shù)據(jù)并生成位置信息問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08

