Clase Fraction

Estás desarrollando una calculadora sencilla y tu tarea es crear una clase de Python Fraction que represente una fracción matemática.
La clase debe tener 5 métodos mágicos:
  • __add__: Este método debe tomar otro objeto Fraction como argumento y devolver un nuevo objeto Fraction que sea la suma de la Fraction original y la Fraction pasada como argumento.
  • __sub__: Este método debe tomar otro objeto Fraction como argumento y devolver un nuevo objeto Fraction que sea el resultado de restar la Fraction argumento de la Fraction original.
  • __mul__: Este método debe tomar otro objeto Fraction como argumento y devolver un nuevo objeto Fraction que sea el resultado de multiplicar la Fraction original por la Fraction argumento.
  • __truediv__: Este método debe tomar otro objeto Fraction como argumento y devolver un nuevo objeto Fraction que sea el resultado de dividir la Fraction original entre la Fraction argumento. Si la Fraction argumento tiene un numerador de cero, este método debe generar un ZeroDivisionError.
  • __str__: Este método debe devolver la fracción en el formato numerator / denominator. El método debe retornar una representación en cadena de la fracción en su forma más simplificada (por ejemplo, "2 / 3" en lugar de "4 / 6"). Para simplificar una fracción, divide el numerador y el denominador por su máximo común divisor (MCD).
La clase Fraction debe poder instanciarse con dos parámetros, un numerator y un denominator. Ambos parámetros deben ser enteros, con el denominator predeterminado en 1 si no se proporciona. Si el denominador es 0, el programa debe generar un ValueError en el método __init__.
Entrada
Salida
f1 = Fraction(1, 2); f2 = Fraction(1, 3); f3 = f1+f2; print(f3)
5 / 6
f1 = Fraction(1, 2); f2 = Fraction(1, 3); f3 = f1-f2; print(f3)
1 / 6
f1 = Fraction(1, 2); f2 = Fraction(1, 3); f3 = f1 * f2; print(f3)
1 / 6
f1 = Fraction(1, 2); f2 = Fraction(1, 3); f3 = f1 / f2; print(f3)
3 / 2
f1 = Fraction(1, 2); f2 = Fraction(0, 3); f3 = f1 / f2; print(f3)
ZeroDivisionError: You can't divide by zero!
f1 = Fraction(1, 0);
ValueError: The denominator cannot be zero!
 

Constraints

Time limit: 1 seconds

Memory limit: 512 MB

Output limit: 1 MB

To check your solution you need to sign in
Sign in to continue