Python中分?jǐn)?shù)的相關(guān)使用教程
你可能不需要經(jīng)常處理分?jǐn)?shù),但當(dāng)你需要時(shí),Python的Fraction類會(huì)給你很大的幫助。在該指南中,我將提供一些有趣的實(shí)例,用于展示如何處理分?jǐn)?shù),突出顯示一些很酷的功能。
1 基礎(chǔ)
Fraction類在Lib/fractions.py文件中,所以可以這樣導(dǎo)入:
from fractions import Fraction
有很多種實(shí)例化Fraction類的方法。
首先,你可以傳入分子和分母:
>>> Fraction(1, 2) Fraction(1, 2)
或者利用另一個(gè)分?jǐn)?shù)進(jìn)行實(shí)例化:
>>> f = Fraction(1, 2) >>> Fraction(f) Fraction(1, 2)
使用一個(gè)浮點(diǎn)數(shù)進(jìn)行實(shí)例化:
>>> Fraction(2.5) Fraction(5, 2)
或者使用一個(gè) decimal:
>>> from decimal import Decimal
>>> Fraction(Decimal('1.1'))
Fraction(11, 10)
最后一種方法,可能是最有趣的一種方法,你可以使用一個(gè)字符串實(shí)例化Fraction類:
>>> Fraction('9/16')
Fraction(9, 16)
本質(zhì)上講,F(xiàn)raction類這么設(shè)計(jì),目的就是為了讓你在實(shí)例化該類之前不需要做很多處理。Fraction類知道如何處理多種不同的數(shù)據(jù)類型。
2 自動(dòng)約分
約分并不是很難,但是對(duì)于一些復(fù)雜的分?jǐn)?shù),約分還是要費(fèi)點(diǎn)事的。Fraction類在這方面特別有用,因?yàn)樗茏詣?dòng)約分分?jǐn)?shù)。
>>> Fraction(153, 272) Fraction(9, 16)
純粹靠想,你可能無法約分153/172,但是Fraction類能很快地完成約分。
3 二元運(yùn)算
你可以像對(duì)待整數(shù)和浮點(diǎn)數(shù)一樣,在Fraction對(duì)象上執(zhí)行二元運(yùn)算。
兩個(gè)分?jǐn)?shù)進(jìn)行相加操作:
>>> Fraction(1, 2) + Fraction(3, 4) Fraction(5, 4)
這樣操作就很方便了,但是你也可以混合整數(shù)或浮點(diǎn)數(shù)。如你所料,F(xiàn)raction對(duì)象和一個(gè)整數(shù)進(jìn)行相加返回一個(gè)Fraction對(duì)象,但和一個(gè)浮點(diǎn)數(shù)進(jìn)行相加返回一個(gè)浮點(diǎn)數(shù)。
>>> Fraction(5, 16) + 3 Fraction(53, 16) >>> Fraction(5, 16) + 3.0 3.3125
這里有一些其他的二元運(yùn)算的例子:
>>> Fraction(5, 16) - Fraction(1, 4) Fraction(1, 16) >>> Fraction(1, 16) * Fraction(3, 16) Fraction(3, 256) >>> Fraction(3, 16) / Fraction(1, 8) Fraction(3, 2)
現(xiàn)在讓我們?cè)囋嚦朔讲僮鳎?br />
>>> Fraction(1, 8) ** Fraction(1, 2) 0.3535533905932738
它返回一個(gè)浮點(diǎn)數(shù),可能是因?yàn)榉謹(jǐn)?shù)不能進(jìn)行合理的計(jì)算。實(shí)際上我們可以使用limit_denominator方法得到一個(gè)近似的Fraction值。
>>> f = Fraction(1, 8) ** Fraction(1, 2) >>> Fraction(f).limit_denominator() Fraction(235416, 665857)
記住,你可以混合字符串和其他上邊實(shí)例化部分中提到的數(shù)據(jù)類型。
>>> Fraction("1/2") + Fraction(2.0)
Fraction(5, 2)
>>> Fraction(2) * Fraction(" 1/2 ")
Fraction(1, 1)
4 獲取Fraction對(duì)象的屬性
你已經(jīng)有了一個(gè)Fraction對(duì)象,并且已經(jīng)做了一些計(jì)算,現(xiàn)在我們?nèi)绾卧L問它的屬性呢?
不閱讀文檔的話,你或許會(huì)嘗試Fraction.numerator和Fraction.denominator,事實(shí)證明你是正確的。
>>> f = Fraction(221, 234) + Fraction(1, 2) >>> f.numerator 13 >>> f.denominator 9
或者作為一個(gè)字符串,打印整個(gè)分?jǐn)?shù):
>>> print f 13/9 >>> a = str(f) >>> a '13/9'5 GCD
這不是Fraction類的一部分,它是在fractions庫(kù)中的。利用它你可以快速找到兩個(gè)數(shù)的最大公約數(shù)。
首先導(dǎo)入:
from fractions import gcd
一些例子:
>>> gcd(100, 75) 25 >>> gcd(221, 234) 13
6 總結(jié)
希望你已經(jīng)學(xué)到了一些關(guān)于在Python中處理分?jǐn)?shù)的東西。如果你想閱讀更多內(nèi)容,可以查看文檔。如果你感覺學(xué)起來非常有動(dòng)力,可以看看源代碼。
如果你有更有趣的分?jǐn)?shù)使用方法,告訴我,我會(huì)將它們添加到指南中。
相關(guān)文章
Python腳本檢測(cè)笑臉漏洞的問題復(fù)現(xiàn)
Python腳本有效檢測(cè)vsftpd2.3.4版本中的笑臉漏洞,該漏洞存在于6200端口,允許任何人連接,輸入帶有特定表情符號(hào)的用戶名和任意密碼即可觸發(fā),本文介紹了環(huán)境搭建、漏洞掃描和利用過程,通過nc命令演示了漏洞復(fù)現(xiàn)步驟2024-10-10
Python中的np.random.seed()隨機(jī)數(shù)種子問題及解決方法
隨機(jī)數(shù)種子,相當(dāng)于我給接下來需要生成的隨機(jī)數(shù)一個(gè)初值,按照我給的這個(gè)初值,按固定順序生成隨機(jī)數(shù),接下來通過本文給大家介紹Python中的np.random.seed()隨機(jī)數(shù)種子問題,需要的朋友可以參考下2022-04-04
將python依賴包打包成window下可執(zhí)行文件bat方式
今天小編就為大家分享一篇將python依賴包打包成window下可執(zhí)行文件bat方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-12-12
Django實(shí)現(xiàn)WebSSH操作物理機(jī)或虛擬機(jī)的方法
這篇文章主要介紹了Django實(shí)現(xiàn)WebSSH操作物理機(jī)或虛擬機(jī)的方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-11-11
結(jié)合Python網(wǎng)絡(luò)爬蟲做一個(gè)今日新聞小程序
本篇文章介紹了我在開發(fā)過程中遇到的一個(gè)問題,以及解決該問題的過程及思路,通讀本篇對(duì)大家的學(xué)習(xí)或工作具有一定的價(jià)值,需要的朋友可以參考下2021-09-09
PyQt5中QTimer定時(shí)器的實(shí)例代碼
如果需要在程序中周期性地進(jìn)行某項(xiàng)操作,比如檢測(cè)某種設(shè)備的狀態(tài),就會(huì)用到定時(shí)器,本文主要介紹了PyQt5中QTimer定時(shí)器的實(shí)例代碼,感興趣的可以了解一下2021-06-06
如何讓PyQt5中QWebEngineView與JavaScript交互
這篇文章主要介紹了如何讓PyQt5中QWebEngineView與JavaScript交互,幫助大家更好的理解和學(xué)習(xí)PyQt5框架,感興趣的朋友可以了解下2020-10-10
Python基礎(chǔ)常用內(nèi)建函數(shù)圖文示例解析
這篇文章主要為大家Python常用內(nèi)建函數(shù),文中通過圖例詳細(xì)的給大家作出了講解分析,有需要的朋友可以借鑒參考下,希望可以有所幫助2021-09-09

