你可能不需要經(jīng)常處理分數(shù),但當你需要時,Python的Fraction類會給你很大的幫助。在該指南中,我將提供一些有趣的實例,用于展示如何處理分數(shù),突出顯示一些很酷的功能。
1 基礎
Fraction類在Lib/fractions.py文件中,所以可以這樣導入:
from fractions import Fraction
有很多種實例化Fraction類的方法。
首先,你可以傳入分子和分母:
>>> Fraction(1, 2)Fraction(1, 2)
或者利用另一個分數(shù)進行實例化:
>>> f = Fraction(1, 2)>>> Fraction(f)Fraction(1, 2)
使用一個浮點數(shù)進行實例化:
>>> Fraction(2.5)Fraction(5, 2)
或者使用一個 decimal:
>>> from decimal import Decimal>>> Fraction(Decimal('1.1'))Fraction(11, 10)最后一種方法,可能是最有趣的一種方法,你可以使用一個字符串實例化Fraction類:
>>> Fraction('9/16')Fraction(9, 16)本質上講,F(xiàn)raction類這么設計,目的就是為了讓你在實例化該類之前不需要做很多處理。Fraction類知道如何處理多種不同的數(shù)據(jù)類型。
2 自動約分
約分并不是很難,但是對于一些復雜的分數(shù),約分還是要費點事的。Fraction類在這方面特別有用,因為它能自動約分分數(shù)。
>>> Fraction(153, 272)Fraction(9, 16)
純粹靠想,你可能無法約分153/172,但是Fraction類能很快地完成約分。
3 二元運算
你可以像對待整數(shù)和浮點數(shù)一樣,在Fraction對象上執(zhí)行二元運算。
兩個分數(shù)進行相加操作:
>>> Fraction(1, 2) + Fraction(3, 4)Fraction(5, 4)
這樣操作就很方便了,但是你也可以混合整數(shù)或浮點數(shù)。如你所料,F(xiàn)raction對象和一個整數(shù)進行相加返回一個Fraction對象,但和一個浮點數(shù)進行相加返回一個浮點數(shù)。
>>> Fraction(5, 16) + 3Fraction(53, 16)>>> Fraction(5, 16) + 3.03.3125
這里有一些其他的二元運算的例子:
>>> 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)在讓我們試試乘方操作:
>>> Fraction(1, 8) ** Fraction(1, 2)0.3535533905932738
它返回一個浮點數(shù),可能是因為分數(shù)不能進行合理的計算。實際上我們可以使用limit_denominator方法得到一個近似的Fraction值。
新聞熱點
疑難解答