Fracciones en Python

Publicado por Andrea Navarro en

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.


¿Preguntas? ¿Comentarios?

Si tenés dudas, o querés dejarnos tus comentarios y consultas, sumate al grupo de Telegram de la comunidad JuncoTIC!
¡Te esperamos!

Categorías: Programación

Andrea Navarro

- Ingeniera en Informática - Docente universitaria - Investigadora