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 weiteresFraction
-Objekt als Argument akzeptieren und ein neuesFraction
-Objekt zurückgeben, das die Summe der ursprünglichen Fraction und der Argument-Fraction ist.
__sub__
: Diese Methode soll ein weiteresFraction
-Objekt als Argument akzeptieren und ein neuesFraction
-Objekt zurückgeben, das das Ergebnis der Subtraktion der Argument-Fraction von der ursprünglichen Fraction ist.
__mul__
: Diese Methode soll ein weiteresFraction
-Objekt als Argument akzeptieren und ein neuesFraction
-Objekt zurückgeben, das das Produkt der ursprünglichen Fraction und der Argument-Fraction ist.
__truediv__
: Diese Methode soll ein weiteresFraction
-Objekt als Argument akzeptieren und ein neuesFraction
-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 einenZeroDivisionError
auslösen.
__str__
: Diese Methode soll den Bruch im Formatnumerator / 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