Kasutades Pythoni standardraamatukogu murdude moodulit, saate teha arvutusi murdudega (ratsionaalarvudega).
Siin selgitatakse järgmist.
- Fraktsiooni konstruktor
- Saada lugeja ja nimetaja väärtused täisarvudena
- Murdude arvutamine ja võrdlemine (ratsionaalarvud)
- Murdude teisendamine kümnendmurdudeks (float)
- Fraktsiooni teisendamine stringiks (str)
- Hangi ratsionaalarvu lähendus
Fraktsiooni konstruktor
Fraktsiooni instantsi loomiseks on mitu võimalust. Kõigil juhtudel jagatakse fraktsioon automaatselt murdudeks.
Määrata lugeja ja nimetaja täisarvudena.
Määrake lugeja ja nimetaja vastavalt täisarvudena. Kui nimetaja jäetakse ära, eeldatakse, et see on 1.
from fractions import Fraction print(Fraction(1, 3)) # 1/3 print(Fraction(2, 6)) # 1/3 print(Fraction(3)) # 3
kümnendikfraktsioon (float)
Kui edastatakse murdarv, teisendatakse see murdarvuks.
print(Fraction(0.25)) # 1/4 print(Fraction(0.33)) # 5944751508129055/18014398509481984
Kui soovite lähendada, määrates maksimaalse nimetaja, kasutage allpool kirjeldatud meetodit limit_denominator().
märgijada (str)
Kui edastatakse stringi väärtus, teisendatakse see murdarvuks.
print(Fraction('2/5')) # 2/5 print(Fraction('16/48')) # 1/3
Saada lugeja ja nimetaja väärtused täisarvudena
Atribuudid tüübiga Fraktsioon võimaldavad saada lugeja ja nimetaja jaoks vastavalt täisarvulised väärtused. Neid ei saa muuta.
numerator
denominator
a = Fraction(1, 3) print(a) # 1/3 print(a.numerator) print(type(a.numerator)) # 1 # <class 'int'> print(a.denominator) print(type(a.denominator)) # 3 # <class 'int'> # a.numerator = 7 # AttributeError: can't set attribute
Murdude arvutamine ja võrdlemine (ratsionaalarvud)
Aritmeetilisi operaatoreid saab kasutada liitmise, lahutamise jne arvutamiseks.
result = Fraction(1, 6) ** 2 + Fraction(1, 3) / Fraction(1, 2) print(result) print(type(result)) # 25/36 # <class 'fractions.Fraction'>
Samuti võib kasutada võrdlusoperaatoreid.
print(Fraction(7, 13) > Fraction(8, 15)) # True
Murdude teisendamine kümnendmurdudeks (float)
Saab teisendada murdarvud kümnendarvudeks float() abil.
a_f = float(a) print(a_f) print(type(a_f)) # 0.3333333333333333 # <class 'float'>
Kui arvutatakse kümnendarvuga, teisendatakse see automaatselt float-tüüpi arvuks.
b = a + 0.1 print(b) print(type(b)) # 0.43333333333333335 # <class 'float'>
Fraktsiooni teisendamine stringiks (str)
Stringiks teisendamiseks kasutage str().
a_s = str(a) print(a_s) print(type(a_s)) # 1/3 # <class 'str'>
Hangi ratsionaalarvu lähendus
Ratsionaalarvu lähendamist saab meetodiga limit_denominator() tüübiga Fraction.
Tagastab ratsionaalarvu (murdosa), mille nimetaja on väiksem või võrdne argumendiga max_denominator. Kui see jäetakse välja, siis max_denominator=1000000.
Ligikaudsed irratsionaalsed arvud nagu pi ja Napier'i arv e
pi = Fraction(3.14159265359) print(pi) # 3537118876014453/1125899906842624 print(pi.limit_denominator(10)) print(pi.limit_denominator(100)) print(pi.limit_denominator(1000)) # 22/7 # 311/99 # 355/113 e = Fraction(2.71828182846) print(e) # 6121026514870223/2251799813685248 print(e.limit_denominator(10)) print(e.limit_denominator(100)) print(e.limit_denominator(1000)) # 19/7 # 193/71 # 1457/536
Ümmarguste kümnendarvude teisendamine murdudeks
a = Fraction(0.565656565656) print(a) # 636872674577009/1125899906842624 print(a.limit_denominator()) # 56/99 a = Fraction(0.3333) print(a) # 6004199023210345/18014398509481984 print(a.limit_denominator()) print(a.limit_denominator(100)) # 3333/10000 # 1/3