Z modulom za ulomke standardne knjižnice Python lahko izvajate izračune z ulomki (racionalnimi števili).
Tukaj je pojasnjeno naslednje.
- Konstruktor ulomka
- Pridobite vrednosti števca in imenovalca kot cela števila
- Računanje in primerjanje ulomkov (racionalnih števil)
- Pretvarjanje ulomkov v decimalke (float)
- Pretvorba ulomka v niz (str)
- Pridobite približek racionalnega števila
Konstruktor ulomka
Primer frakcije lahko ustvarite na več načinov. V vseh primerih se frakcija samodejno razdeli na dele.
Števec in imenovalec določite kot cela števila
Števec in imenovalec določite kot cela števila. Če je imenovalec izpuščen, se predpostavlja, da je enak 1.
from fractions import Fraction print(Fraction(1, 3)) # 1/3 print(Fraction(2, 6)) # 1/3 print(Fraction(3)) # 3
desetiški ulomek (float)
Če je posredovana ulomna vrednost, se pretvori v ulomek.
print(Fraction(0.25)) # 1/4 print(Fraction(0.33)) # 5944751508129055/18014398509481984
Če se želite približati z določitvijo največjega imenovalca, uporabite spodaj opisano metodo limit_denominator().
niz znakov (str)
Če je posredovana vrednost v obliki niza, se pretvori v ulomek.
print(Fraction('2/5')) # 2/5 print(Fraction('16/48')) # 1/3
Pridobite vrednosti števca in imenovalca kot cela števila
Z atributi vrste Fraction lahko za števec in imenovalec dobite celoštevilske vrednosti. Ni jih mogoče spreminjati.
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
Računanje in primerjanje ulomkov (racionalnih števil)
Z aritmetičnimi operaterji lahko izračunate seštevanje, odštevanje itd.
result = Fraction(1, 6) ** 2 + Fraction(1, 3) / Fraction(1, 2) print(result) print(type(result)) # 25/36 # <class 'fractions.Fraction'>
Uporabljajo se lahko tudi primerjalni operatorji.
print(Fraction(7, 13) > Fraction(8, 15)) # True
Pretvarjanje ulomkov v decimalke (float)
S funkcijo float() lahko pretvorite ulomke v decimalna števila.
a_f = float(a) print(a_f) print(type(a_f)) # 0.3333333333333333 # <class 'float'>
Kadar se izračuna z decimalnim številom, se samodejno pretvori v tip float.
b = a + 0.1 print(b) print(type(b)) # 0.43333333333333335 # <class 'float'>
Pretvorba ulomka v niz (str)
Za pretvorbo v niz uporabite funkcijo str().
a_s = str(a) print(a_s) print(type(a_s)) # 1/3 # <class 'str'>
Pridobite približek racionalnega števila
Približek racionalnega števila lahko dobite z metodo limit_denominator() tipa Fraction.
Vrne racionalno število (delež), katerega imenovalec je manjši ali enak argumentu max_denominator. Če je izpuščen, je max_denominator=1000000.
približevanje iracionalnim številom, kot sta pi in Napierjevo število 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
Pretvarjanje krožnih decimalk v ulomke
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