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 |
---|---|
| 5 / 6 |
| 1 / 6 |
| 1 / 6 |
| 3 / 2 |
| ZeroDivisionError: You can't divide by zero! |
| ValueError: The denominator cannot be zero! |
Constraints
Time limit: 2 seconds
Memory limit: 512 MB
Output limit: 1 MB