Python中分數的相關使用教程

來源:互聯網
上載者:User
你可能不需要經常處理分數,但當你需要時,Python的Fraction類會給你很大的協助。在該指南中,我將提供一些有趣的執行個體,用於展示如何處理分數,反白一些很酷的功能。
1 基礎

Fraction類在Lib/fractions.py檔案中,所以可以這樣匯入:

from fractions import Fraction

有很多種執行個體化Fraction類的方法。

首先,你可以傳入分子和分母:

>>> Fraction(1, 2)Fraction(1, 2)

或者利用另一個分數進行執行個體化:

>>> f = Fraction(1, 2)>>> Fraction(f)Fraction(1, 2)

使用一個浮點數進行執行個體化:

>>> 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)

本質上講,Fraction類這麼設計,目的就是為了讓你在執行個體化該類之前不需要做很多處理。Fraction類知道如何處理多種不同的資料類型。
2 自動約分

約分並不是很難,但是對於一些複雜的分數,約分還是要費點事的。Fraction類在這方面特別有用,因為它能自動約分分數。

>>> Fraction(153, 272)Fraction(9, 16)

純粹靠想,你可能無法約分153/172,但是Fraction類能很快地完成約分。
3 二元運算

你可以像對待整數和浮點數一樣,在Fraction對象上執行二元運算。

兩個分數進行相加操作:

>>> Fraction(1, 2) + Fraction(3, 4)Fraction(5, 4)

這樣操作就很方便了,但是你也可以混合整數或浮點數。如你所料,Fraction對象和一個整數進行相加返回一個Fraction對象,但和一個浮點數進行相加返回一個浮點數。

>>> 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)

現在讓我們試試乘方操作:

>>> Fraction(1, 8) ** Fraction(1, 2)0.3535533905932738

它返回一個浮點數,可能是因為分數不能進行合理的計算。實際上我們可以使用limit_denominator方法得到一個近似的Fraction值。

>>> f = Fraction(1, 8) ** Fraction(1, 2)>>> Fraction(f).limit_denominator()Fraction(235416, 665857)

記住,你可以混合字串和其他上邊執行個體化部分中提到的資料類型。

>>> Fraction("1/2") + Fraction(2.0)Fraction(5, 2)>>> Fraction(2) * Fraction("  1/2  ")Fraction(1, 1)

4 擷取Fraction對象的屬性

你已經有了一個Fraction對象,並且已經做了一些計算,現在我們如何訪問它的屬性呢?

不閱讀文檔的話,你或許會嘗試Fraction.numerator和Fraction.denominator,事實證明你是正確的。

>>> f = Fraction(221, 234) + Fraction(1, 2)>>> f.numerator13>>> f.denominator9

或者作為一個字串,列印整個分數:

>>> print f13/9>>> a = str(f)>>> a'13/9'
5 GCD

這不是Fraction類的一部分,它是在fractions庫中的。利用它你可以快速找到兩個數的最大公約數。

首先匯入:

from fractions import gcd

一些例子:

>>> gcd(100, 75)25>>> gcd(221, 234)13


6 總結

希望你已經學到了一些關於在Python中處理分數的東西。如果你想閱讀更多內容,可以查看文檔。如果你感覺學起來非常有動力,可以看看原始碼。

如果你有更有趣的分數使用方法,告訴我,我會將它們添加到指南中。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.