Die Klasse Fraction

Sie entwickeln einen einfachen Rechner, und Ihre Aufgabe ist es, eine Python-Klasse Fraction zu erstellen, die einen mathematischen Bruch darstellt.
Die Klasse sollte fünf magische Methoden enthalten:
  • __add__: Diese Methode soll ein weiteres Fraction-Objekt als Argument akzeptieren und ein neues Fraction-Objekt zurückgeben, das die Summe der ursprünglichen Fraction und der Argument-Fraction ist.
  • __sub__: Diese Methode soll ein weiteres Fraction-Objekt als Argument akzeptieren und ein neues Fraction-Objekt zurückgeben, das das Ergebnis der Subtraktion der Argument-Fraction von der ursprünglichen Fraction ist.
  • __mul__: Diese Methode soll ein weiteres Fraction-Objekt als Argument akzeptieren und ein neues Fraction-Objekt zurückgeben, das das Produkt der ursprünglichen Fraction und der Argument-Fraction ist.
  • __truediv__: Diese Methode soll ein weiteres Fraction-Objekt als Argument akzeptieren und ein neues Fraction-Objekt zurückgeben, das das Ergebnis der Division der ursprünglichen Fraction durch die Argument-Fraction ist. Hat die Argument-Fraction einen Zähler von Null, sollte diese Methode einen ZeroDivisionError auslösen.
  • __str__: Diese Methode soll den Bruch im Format numerator / denominator zurückgeben. Die Methode sollte eine Zeichenkettenrepräsentation des Bruchs in seiner einfachsten Form liefern (zum Beispiel "2 / 3" statt "4 / 6"). Um einen Bruch zu vereinfachen, teilen Sie den Zähler und den Nenner durch ihren größten gemeinsamen Teiler (ggT).
Die Klasse Fraction sollte mit zwei Parametern instanziiert werden können, einem numerator und einem denominator. Beide Parameter sollten ganze Zahlen sein, wobei der denominator standardmäßig auf 1 gesetzt wird, wenn er nicht angegeben wird. Ist der Nenner 0, sollte das Programm in der __init__-Methode einen ValueError auslösen.
Eingabe
Ausgabe
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