亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

利用標(biāo)準(zhǔn)庫(kù)fractions模塊讓Python支持分?jǐn)?shù)類型的方法詳解

 更新時(shí)間:2017年08月11日 09:14:21   作者:GanZiQim  
最近在工作中遇到了分?jǐn)?shù)處理,查找相關(guān)的資料發(fā)現(xiàn)可以利用Fraction類來實(shí)現(xiàn),所以下面這篇文章主要給大家介紹了關(guān)于利用標(biāo)準(zhǔn)庫(kù)fractions模塊讓Python支持分?jǐn)?shù)類型的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下。

前言

你可能不需要經(jīng)常處理分?jǐn)?shù),但當(dāng)你需要時(shí),Python的Fraction類會(huì)給你很大的幫助。本文將給大家詳細(xì)介紹關(guān)于利用標(biāo)準(zhǔn)庫(kù)fractions模塊讓Python支持分?jǐn)?shù)類型的相關(guān)內(nèi)容,分享出來供大家參考學(xué)習(xí),下面話不多說了,來一起看看詳細(xì)的介紹:

fractions模塊

fractions模塊提供了分?jǐn)?shù)類型的支持。

Fraction類

該類是fractions模塊的核心,它繼承了numbers.Rational類并且實(shí)現(xiàn)了該類所有的方法。

構(gòu)造函數(shù)并不復(fù)雜:

class fractions.Fraction(numerator=0, denominator=1) 
class fractions.Fraction(int|float|str|Decimal|Fraction)

可以同時(shí)提供分子(numerator)和分母(denominator)給構(gòu)造函數(shù)用于實(shí)例化Fraction類,但兩者必須同時(shí)是int類型或者numbers.Rational類型,否則會(huì)拋出類型錯(cuò)誤。當(dāng)分母為0,初始化的時(shí)候會(huì)導(dǎo)致拋出異常ZeroDivisionError。

而如果只提供一個(gè)參數(shù),則可以用上述五種類型進(jìn)行初始化。當(dāng)使用字符串進(jìn)行初始化時(shí),fractions模塊使用內(nèi)置的正則表達(dá)式進(jìn)行匹配。而使用浮點(diǎn)數(shù)或者Decimal進(jìn)行初始化時(shí),fractions模塊會(huì)在內(nèi)部調(diào)用as_integer_ratio() 。

下面的代碼示例來自官方文檔,展示了各種實(shí)例化Fraction的方式:

>>> from fractions import Fraction
>>> Fraction(16, -10)
Fraction(-8, 5)
>>> Fraction(123)
Fraction(123, 1)
>>> Fraction()
Fraction(0, 1)
>>> Fraction('3/7')
Fraction(3, 7)
>>> Fraction(' -3/7 ')
Fraction(-3, 7)
>>> Fraction('1.414213 \t\n')
Fraction(1414213, 1000000)
>>> Fraction('-.125')
Fraction(-1, 8)
>>> Fraction('7e-6')
Fraction(7, 1000000)
>>> Fraction(2.25)
Fraction(9, 4)
>>> Fraction(1.1)
Fraction(2476979795053773, 2251799813685248)
>>> from decimal import Decimal
>>> Fraction(Decimal('1.1'))
Fraction(11, 10)

限制分母

fractions.Fraction.limit_denominator(max_denominator=1000000)

有時(shí)候?qū)⒏↑c(diǎn)數(shù)或者Decimal作為Fraction實(shí)例的初始化數(shù)據(jù)可能會(huì)遇到舍入誤差的問題,如上面調(diào)用Fraction(1.1)時(shí)不返回Fraction(11, 10)的例子。這時(shí)Fraction類提供了一個(gè)實(shí)例方法limit_denominator()用于減小這種誤差。這個(gè)方法本來是為了通過限制分母來得到一個(gè)近似值,但是在出現(xiàn)舍入誤差的時(shí)候反倒使得結(jié)果更加精確了,如下面的例子:

>>> from fractions import Fraction
>>> Fraction(1.1)
Fraction(2476979795053773, 2251799813685248)
>>> Fraction(1.1).limit_denominator()
Fraction(11, 10)

將Fraction用于算術(shù)運(yùn)算、關(guān)系運(yùn)算和其他多種操作

上面提到,F(xiàn)raction類繼承了numbers.Rational類并且實(shí)現(xiàn)了該類所有的方法。所以Fraction類事實(shí)上通過重載很多特殊函數(shù),使得其實(shí)例可以直接用于多種算術(shù)運(yùn)算。

不僅支持算術(shù)運(yùn)算,F(xiàn)raction類同時(shí)也支持關(guān)系運(yùn)算、pickle模塊、copy模塊和哈希值的計(jì)算。

>>> from fractions import Fraction
>>> x = Fraction(1, 2)
>>> y = Fraction(1, 3)
>>> x + y
Fraction(5, 6)
>>> x - y
Fraction(1, 6)
>>> x * y
Fraction(1, 6)
>>> x / y
Fraction(3, 2)
>>> x ** 2
Fraction(1, 4)
>>> -x
Fraction(-1, 2)
>>> abs(x)
Fraction(1, 2)
>>> round(x)
0
>>> import math
>>> math.floor(x)
0
>>> math.ceil(x)
1
>>> x == y
False
>>> x > y
True

其他函數(shù)

fractions.Fraction.from_float(flt) 
fractions.Fraction.from_decimal(dec)

在Python3.2之前,F(xiàn)raction類不支持通過將浮點(diǎn)數(shù)和Decimal傳入構(gòu)造方法來獲得實(shí)例。而是提供了上面兩個(gè)類方法,通過調(diào)用類方法的方式來產(chǎn)生實(shí)例,目前版本(Python 3.6.1)這兩個(gè)類方法仍然存在。

fractions.gcd(a, b)

用于計(jì)算最大公約數(shù)。這個(gè)函數(shù)在Python3.5之后就廢棄了,官方建議使用math.gcd() 。

總結(jié)

沒啥要總結(jié)的…只能說Python太方便了…對(duì)了,這篇博客其實(shí)也是個(gè)挖了挺久的坑了,之前里面有一部分源碼沒看懂所以一直沒發(fā)上來。哈哈,后面這個(gè)標(biāo)準(zhǔn)庫(kù)學(xué)習(xí)的系列還是會(huì)一直更下去的!

好了,以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

參考資料:

https://docs.python.org/3.6/library/fractions.html

相關(guān)文章

  • Python寫一個(gè)簡(jiǎn)單的在線編輯器

    Python寫一個(gè)簡(jiǎn)單的在線編輯器

    這篇文章主要介紹了如何利用Python寫一個(gè)簡(jiǎn)單的在線編輯器,主要通過pywebio程序,實(shí)現(xiàn)了Python的簡(jiǎn)陋在線編輯器,需要的小伙伴可以參考一下,希望對(duì)你有所幫助
    2022-02-02
  • Python內(nèi)置函數(shù)OCT詳解

    Python內(nèi)置函數(shù)OCT詳解

    本文給大家介紹的是python中的內(nèi)置函數(shù)oct(),其主要作用是將十進(jìn)制數(shù)轉(zhuǎn)換成八進(jìn)制,再變成字符。有需要的小伙伴可以參考下
    2016-11-11
  • Python六大開源框架對(duì)比

    Python六大開源框架對(duì)比

    在這篇文章里,我們將為Python Web開發(fā)者回顧基于Python的6大Web應(yīng)用框架。無(wú)論你是出于愛好還是需求,這六大框架都可能會(huì)成為你工作上不錯(cuò)的得力助手。
    2015-10-10
  • Python3 列表list合并的4種方法

    Python3 列表list合并的4種方法

    這篇文章主要介紹了Python3 列表list合并的4種方法,需要的朋友可以參考下
    2021-04-04
  • 一文詳解Python中多進(jìn)程和進(jìn)程池的使用方法

    一文詳解Python中多進(jìn)程和進(jìn)程池的使用方法

    這篇文章將介紹Python中多進(jìn)程和進(jìn)程池的使用方法,并提供一些實(shí)用的案例供大家參考,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2023-04-04
  • Python cookbook(數(shù)據(jù)結(jié)構(gòu)與算法)在字典中將鍵映射到多個(gè)值上的方法

    Python cookbook(數(shù)據(jù)結(jié)構(gòu)與算法)在字典中將鍵映射到多個(gè)值上的方法

    這篇文章主要介紹了Python在字典中將鍵映射到多個(gè)值上的方法,涉及Python針對(duì)字典的相關(guān)映射與初始化相關(guān)操作技巧,需要的朋友可以參考下
    2018-02-02
  • Python模擬鍵盤輸入自動(dòng)登錄TGP

    Python模擬鍵盤輸入自動(dòng)登錄TGP

    這篇文章主要介紹了Python模擬鍵盤輸入自動(dòng)登錄TGP的示例代碼,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下
    2020-11-11
  • Django+Vue實(shí)現(xiàn)文件上傳下載的項(xiàng)目實(shí)踐

    Django+Vue實(shí)現(xiàn)文件上傳下載的項(xiàng)目實(shí)踐

    本文主要介紹了Django+Vue實(shí)現(xiàn)文件上傳下載的項(xiàng)目實(shí)踐,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • Python報(bào)錯(cuò)error: subprocess-exited-with-error解決辦法

    Python報(bào)錯(cuò)error: subprocess-exited-with-error解決辦法

    在Python開發(fā)中,遇到subprocess-exited-with-error通常是由依賴缺失、權(quán)限問題、環(huán)境配置錯(cuò)誤或兼容性問題導(dǎo)致,修復(fù)方法包括安裝依賴、使用虛擬環(huán)境、提升權(quán)限、檢查路徑和命令,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-10-10
  • Python pyecharts模塊安裝與入門教程

    Python pyecharts模塊安裝與入門教程

    Echarts 是一個(gè)由百度開源的數(shù)據(jù)可視化,憑借著良好的交互性,精巧的圖表設(shè)計(jì),得到了眾多開發(fā)者的認(rèn)可,這篇文章主要介紹了Python pyecharts數(shù)據(jù)可視化模塊安裝與入門教程,需要的朋友可以參考下
    2022-09-09

最新評(píng)論