Classe Fraction
Estás a desenvolver uma calculadora simples e a tua tarefa é criar uma classe Python
Fraction
que representa uma fração matemática.A classe deve ter 5 métodos mágicos:
__add__
: Este método deve receber outro objetoFraction
como argumento e retornar um novo objetoFraction
que é a soma daFraction
original com aFraction
do argumento.
__sub__
: Este método deve receber outro objetoFraction
como argumento e retornar um novo objetoFraction
que é o resultado daFraction
original subtraída pelaFraction
do argumento.
__mul__
: Este método deve receber outro objetoFraction
como argumento e retornar um novo objetoFraction
que é o resultado daFraction
original multiplicada pelaFraction
do argumento.
__truediv__
: Este método deve receber outro objetoFraction
como argumento e retornar um novo objetoFraction
que é o resultado daFraction
original dividida pelaFraction
do argumento. Se aFraction
do argumento tiver um numerador igual a zero, este método deve levantar umZeroDivisionError
.
__str__
: Este método deve retornar a fração no formatonumerator / denominator
. O método deve retornar uma representação em string da fração na sua forma mais simples (por exemplo, "2 / 3" em vez de "4 / 6"). Para simplificar uma fração, divide-se o numerador e o denominador pelo seu máximo divisor comum (MDC).
A classe
Fraction
deve poder ser instanciada com dois parâmetros, um numerator
e um denominator
. Ambos os parâmetros devem ser inteiros, com o denominator
assumindo o valor 1
por padrão se não for fornecido. Se o denominador for 0, o programa deve levantar um ValueError
no método __init__
.Entrada | Saída |
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