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 objetoFraction
como argumento y devolver un nuevo objetoFraction
que sea la suma de laFraction
original y laFraction
pasada como argumento.
__sub__
: Este método debe tomar otro objetoFraction
como argumento y devolver un nuevo objetoFraction
que sea el resultado de restar laFraction
argumento de laFraction
original.
__mul__
: Este método debe tomar otro objetoFraction
como argumento y devolver un nuevo objetoFraction
que sea el resultado de multiplicar laFraction
original por laFraction
argumento.
__truediv__
: Este método debe tomar otro objetoFraction
como argumento y devolver un nuevo objetoFraction
que sea el resultado de dividir laFraction
original entre laFraction
argumento. Si laFraction
argumento tiene un numerador de cero, este método debe generar unZeroDivisionError
.
__str__
: Este método debe devolver la fracción en el formatonumerator / 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