Classe Fraction

Stai sviluppando una semplice calcolatrice e il tuo compito è creare una classe Python Fraction che rappresenti una frazione matematica.
La classe dovrebbe avere 5 metodi magici:
  • __add__: Questo metodo dovrebbe accettare un altro oggetto Fraction come argomento e restituire un nuovo oggetto Fraction che è la somma della Fraction originale e della Fraction passata come argomento.
  • __sub__: Questo metodo dovrebbe accettare un altro oggetto Fraction come argomento e restituire un nuovo oggetto Fraction che è il risultato della Fraction originale meno la Fraction passata come argomento.
  • __mul__: Questo metodo dovrebbe accettare un altro oggetto Fraction come argomento e restituire un nuovo oggetto Fraction che è il risultato della Fraction originale moltiplicata per la Fraction passata come argomento.
  • __truediv__: Questo metodo dovrebbe accettare un altro oggetto Fraction come argomento e restituire un nuovo oggetto Fraction che è il risultato della Fraction originale divisa per la Fraction passata come argomento. Se la Fraction passata come argomento ha un numeratore pari a zero, questo metodo dovrebbe sollevare un ZeroDivisionError.
  • __str__: Questo metodo dovrebbe restituire la frazione nel formato numerator / denominator. Il metodo dovrebbe restituire una rappresentazione in stringa della frazione nella sua forma più semplice (ad esempio, "2 / 3" invece di "4 / 6"). Per semplificare una frazione, dividi il numeratore e il denominatore per il loro massimo comune divisore (MCD).
La classe Fraction dovrebbe poter essere istanziata con due parametri, un numerator e un denominator. Entrambi i parametri dovrebbero essere interi, con il denominator predefinito a 1 se non fornito. Se il denominatore è 0, il programma dovrebbe sollevare un ValueError nel metodo __init__.
Input
Risultato
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