Utilizând modulul fracții din biblioteca standard Python, puteți efectua calcule cu fracții (numere raționale).
Aici se explică următoarele.
- Constructor de fracție
- Obțineți valorile numitorului și numitorului ca numere întregi
- Calcularea și compararea fracțiilor (numere raționale)
- Conversia fracțiilor în zecimale (float)
- Conversia Fracție în șir de caractere (str)
- Obțineți aproximarea numărului rațional
Constructor de fracție
Există mai multe moduri de a crea o instanță de fracție. În toate cazurile, fracția este împărțită automat în fracții.
Specificați numărătorul și numitorul ca numere întregi
Specificați numărătorul și numitorul ca numere întregi, respectiv numitorul. În cazul în care numitorul este omis, se presupune că este egal cu 1.
from fractions import Fraction print(Fraction(1, 3)) # 1/3 print(Fraction(2, 6)) # 1/3 print(Fraction(3)) # 3
fracție zecimală (float)
Dacă este transmisă o valoare fracționară, aceasta este convertită într-o fracție.
print(Fraction(0.25)) # 1/4 print(Fraction(0.33)) # 5944751508129055/18014398509481984
Dacă doriți să aproximați prin specificarea unui numitor maxim, utilizați metoda limit_denominator() descrisă mai jos.
șir de caractere (str)
Dacă este transmisă o valoare de tip șir de caractere, aceasta este convertită într-o fracție.
print(Fraction('2/5')) # 2/5 print(Fraction('16/48')) # 1/3
Obțineți valorile numitorului și numitorului ca numere întregi
Atributele de tip Fraction vă permit să obțineți valori întregi pentru numitor și, respectiv, numitor. Acestea nu pot fi modificate.
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
Calcularea și compararea fracțiilor (numere raționale)
Operatorii aritmetici pot fi utilizați pentru a calcula adunări, scăderi etc.
result = Fraction(1, 6) ** 2 + Fraction(1, 3) / Fraction(1, 2) print(result) print(type(result)) # 25/36 # <class 'fractions.Fraction'>
Se pot utiliza, de asemenea, operatori de comparare.
print(Fraction(7, 13) > Fraction(8, 15)) # True
Conversia fracțiilor în zecimale (float)
Poate converti din fracții în zecimale cu float().
a_f = float(a) print(a_f) print(type(a_f)) # 0.3333333333333333 # <class 'float'>
Atunci când se calculează cu un număr zecimal, acesta este convertit automat într-un tip float.
b = a + 0.1 print(b) print(type(b)) # 0.43333333333333335 # <class 'float'>
Conversia Fracție în șir de caractere (str)
Pentru a converti într-un șir de caractere, utilizați str().
a_s = str(a) print(a_s) print(type(a_s)) # 1/3 # <class 'str'>
Obțineți aproximarea numărului rațional
O aproximare a unui număr rațional poate fi obținută cu metoda limit_denominator() de tip Fracție.
Returnează numărul rațional (fracție) al cărui numitor este mai mic sau egal cu argumentul max_denominator. Dacă este omis, max_denominator=1000000.
Aproximarea numerelor iraționale, cum ar fi pi și numărul Napier 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
Conversia zecimale circulare în fracții
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