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 objeto Fraction como argumento e retornar um novo objeto Fraction que é a soma da Fraction original com a Fraction do argumento.
  • __sub__: Este método deve receber outro objeto Fraction como argumento e retornar um novo objeto Fraction que é o resultado da Fraction original subtraída pela Fraction do argumento.
  • __mul__: Este método deve receber outro objeto Fraction como argumento e retornar um novo objeto Fraction que é o resultado da Fraction original multiplicada pela Fraction do argumento.
  • __truediv__: Este método deve receber outro objeto Fraction como argumento e retornar um novo objeto Fraction que é o resultado da Fraction original dividida pela Fraction do argumento. Se a Fraction do argumento tiver um numerador igual a zero, este método deve levantar um ZeroDivisionError.
  • __str__: Este método deve retornar a fração no formato numerator / 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

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