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 unZeroDivisionError
.
__str__
: Questo metodo dovrebbe restituire la frazione nel formatonumerator / 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