Classe Fraction

Vous développez une calculatrice simple et votre tâche est de créer une classe Python Fraction qui représente une fraction mathématique.
La classe doit posséder 5 méthodes magiques :
  • __add__ : Cette méthode doit prendre un autre objet Fraction en argument et renvoyer un nouvel objet Fraction représentant la somme de la Fraction originale et de la Fraction passée en argument.
  • __sub__ : Cette méthode doit prendre un autre objet Fraction en argument et renvoyer un nouvel objet Fraction représentant le résultat de la Fraction originale soustraite par la Fraction argument.
  • __mul__ : Cette méthode doit prendre un autre objet Fraction en argument et renvoyer un nouvel objet Fraction représentant le produit de la Fraction originale et de la Fraction argument.
  • __truediv__ : Cette méthode doit prendre un autre objet Fraction en argument et renvoyer un nouvel objet Fraction représentant le quotient de la Fraction originale divisée par la Fraction argument. Si la Fraction argument a un numérateur égal à zéro, cette méthode doit lever une exception ZeroDivisionError.
  • __str__ : Cette méthode doit retourner la fraction au format numérateur / dénominateur. Elle doit renvoyer une représentation sous forme de chaîne de caractères de la fraction sous sa forme la plus simplifiée (par exemple, "2 / 3" au lieu de "4 / 6"). Pour simplifier une fraction, divisez le numérateur et le dénominateur par leur plus grand commun diviseur (PGCD).
La classe Fraction doit être instanciable avec deux paramètres, un numérateur et un dénominateur. Les deux paramètres doivent être des entiers, avec le dénominateur par défaut à 1 s'il n'est pas fourni. Si le dénominateur est égal à 0, le programme doit lever une exception ValueError dans la méthode __init__.
Entrée
Sortie
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