fractions

Consulta: https://docs.python.org/3.5/library/fractions.html

Python permette di usare le frazioni e quindi di affrontare in modo naturale molti problemi matematici tradizionali (MCD, mcm, equazioni, sistemi, …)

Costruttori

fractions.Fraction()Restituisce (0, 1)
fractions.Fraction(10)
fractions.Fraction.from_decimal(10)
Restituisce (10, 1)
fractions.Fraction(11, 10)Restituisce (11, 10)
fractions.Fraction(1.1)
fractions.Fraction.from_float(1.1)
NON restituisce (11, 10): (2476979795053773, 2251799813685248)
fractions.Fraction('11/10')Restituisce (11, 10)
fractions.Fraction('1.1')Restituisce (11, 10)
fractions.Fraction('11/10')Restituisce (11, 10)
fractions.Fraction(f)Restituisce una copia della frazione f

Operatori

Tipo?
f1 + f2FractionAddizione
f1 - f2FractionSottrazione
f1 * f2FractionMoltiplicazione
f1 / f2FractionDivisione
f1 ** nFractionPotenza n-esima
f1 < f2bool
f1 <= f2bool
f1 > f2bool
f1 >= f2bool
f1 == f2bool
f1 != f2bool

Funzioni / metodi / proprietà

Tipo?
abs(f)FractionRestituisce la frazione senza segno
f.as_integer_ratio()tupleRestituisce una coppia di interi il cui rapporto è uguale a f
f.denominatorintRestituisce il denominatore di f
f.limit_denominator()
f.limit_denominator(n)
FractionRestituisce la frazione più vicina a f.
Con il  denominatore non maggiore di n.
max(f1, f2, ...)Fraction
min(f1, f2, ...) Fraction
f.numeratorintRestituisce il numeratore di f
pow(f, n)FractionRestituisce la potenza n-esima di f
round(f, n)FractionRestituisce la frazione più vicina a f con a denominatore 10**n (?)
sum(z)FractionRestituisce la somma di una sequenza di frazioni

Si possono applicare le funzioni di uso comune e ottenere float/int

  • float(f), int(f), pow(f1, f2), round(f), ...
  • math.ceil(f), math.floor(f), math.sqrt(f), ...
  • random.uniform(f1, f2), ...

Prova

import fractions
import math

n1=10; d1=12
n2=12; d2=10

a=fractions.Fraction(n1, d1) # costruttore
b=fractions.Fraction(n2, d2)

print('a =', a)
print('b =', b)
print()
print(a, '+' , b, '=', a+b ) # operatori matematici
print(a, '-' , b, '=', a-b )
print(a, '*' , b, '=', a*b )
print(a, '/' , b, '=', a/b )
print(a, '**', 2, '=', a**2)
print()
print(a, '<' , b, '=', a < b ) # operatori di confronto
print(a, '<=', b, '=', a <= b) 
print(a, '>' , b, '=', a < b ) 
print(a, '>=', b, '=', a >= b)
print(a, '==', b, '=', a == b)
print(a, '!=', b, '=', a != b)
print()
print('     abs('  , a        , ') =', abs(a)            ) # funzioni
print('math.ceil(' , a        , ') =', math.ceil(a)      )
print('     float(', a        , ') =', float(a)          )
print('math.floor(', a        , ') =', math.floor(a)     )
print('     int('  , a        , ') =', int(a)            )
print('     pow('  , a, ',', 2, ') =', pow(a,2)          )
print('     pow('  , a, ',', b, ') =', pow(a,b)          )
print('     round(', a        , ') =', round(a)          )
print('     round(', a, ',', 1, ') =', round(a,1)        )
print()
print('numerator   =', a.numerator  ) # metodi
print('denominator =', a.denominator)
print('fractions.Fraction.from_float(1.1) =', fractions.Fraction.from_float(1.1))
print('limit_denominator(2) =', a.limit_denominator(2))