Fracciones en Python
En este artículo veremos como utilizar el objeto de Python Fraction para la creación de fracciones. También veremos como simplificar y redondear los valores de dichas fracciones y realizar operaciones entre ellas.
Crear fracciones
Para crear una fracción se utiliza la clase Fraction. Existen diferentes formatos de construcción de un objeto fracción.
Numerador y denominador
Es posible crear una fracción pasando el numerador y denominador a la clase Fraction.
fraccion = Fraction(10, 3)
print(fraccion)
10/3
Si la fracción resultante puede ser simplificada esto se hará de manera automática.
fraccion = Fraction(6, 12)
print(fraccion)
1/2
Si el numerador o denominador tienen un valor negativo este será asignado al objeto Fraction.
fraccion = Fraction(-3, 8)
print(fraccion)
-3/8
Cadena de caracteres
El constructor de fracciones acepta diferentes formatos de cadenas de caracteres:
Es posible separar el numerador y el denominador utilizando una barra.
fraccion = Fraction('3/7')
print(fraccion)
3/7
Colocando un punto decimal el constructor el valor decimal en una fracción.
fraccion = Fraction('1.234')
print(fraccion)
fraccion = Fraction('12.34')
print(fraccion)
fraccion = Fraction('123.4')
print(fraccion)
617/500
617/50
617/5
La clase Fraction es capaz de identificar el formato de numeración científica y convertir el valor en una fracción.
fraccion = Fraction('2e-3')
print(fraccion)
fraccion = Fraction('2e-4')
print(fraccion)
fraccion = Fraction('2e-5')
print(fraccion)
1/500
1/5000
1/50000
Atributos y métodos
Una vez creado el objeto fracción este cuenta con los siguientes métodos:
fraccion = Fraction('1.25234')
print(fraccion)
print(fraccion.numerator)
print(fraccion.denominator)
62617/50000
62617
50000
El tipo de dato fracción cuenta también con el método max_denominator. Esta función regresa la instancia de la fracción que más se aproxima al denominador seleccionado. En el siguiente ejemplo se puede observar como las fracciones resultantes tienen un valor similar al original modificando el denominador para no exceder el valor configurado.
print(float(fraccion))
fraccionA = fraccion.limit_denominator(1000)
print(fraccionA)
print(float(fraccionA))
fraccionB = fraccion.limit_denominator(100)
print(fraccionB)
print(float(fraccionB))
1.25234
134/107
1.2523364485981308
124/99
1.252525252525252
También es posible utilizar todos los métodos de redondeo utilizado para valores float:
import math
fraccion = Fraction('1.25234')
print(math.floor(fraccion))
print(math.ceil(fraccion))
print(round(fraccion))
1
2
1
Operaciones con fracciones
Utilizando los objetos Fraction se pueden realizar todas las operaciones matemáticas de Python normalmente utilizadas para valores enteros y flotantes.
fraccionA = Fraction('3/5')
fraccionB = Fraction('1/2')
#Suma
fraccion = fraccionA + fraccionB
print(fraccion)
#Resta
fraccion = fraccionA - fraccionB
print(fraccion)
#Multiplicación
fraccion = fraccionA * fraccionB
print(fraccion)
#División
fraccion = fraccionA / fraccionB
print(fraccion)
11/10
1/10
3/10
6/5
En este artículo hemos visto como utilizar la clase Fracción para el manejo de fracciones. Los métodos y funciones existentes permiten realizar operaciones entre estos valores en unas pocas lineas de código haciendo que sea sencillo incluir este código en la enseñanza de fracciones.