Mit Rationalen Zahlen kann der Computer normalerweise nicht richtig rechnen. Wir können ihm dies aber beibringen, indem wir eine Klasse Rational selbst programmieren.
Ein Beispiel:
Für das obenstehende Beispiel, sollte man den folgenden Code verwenden können:
from rational import Rational
a = Rational(1,2)
b = Rational(1,3)
c = a.mult(b)
print(c)Aufgabe: Auftrag
- Erstelle eine Klasse
Rationalim Dokumentrational.py. - Überlege dir welche Eigenschaften eine Rationale Zahl haben muss.
- Programmiere einen entsprechenden Konstruktor und teste diesen
- Programmiere die
__str__(self)-Funktion, welche die Zahl in einen String umwandelt und automatisch beiprintaufgerufen wird. - Programmiere die
mult-Methode - Versuche weitere Rechenoperationen umzusetzen (siehe unten)
Tipp
Damit die Zeile c = a.mult(b) funktioniert, muss ein neues Rational-Objekt erzeugt und zurückgegeben werden! Dazu berechnen wir also Zähler und Nenner des Ergebnisses (aus Zähler und Nenner der beiden Zahlen) und liefern dieses als neues Rational-Objekt zurück:
class Rational:
def mult(self, other):
zaehler = ...
nenner = ...
return Rational(zaehler, nenner)Addition
Gleichnamig machen:
ev. Kürzen:
Subtraktion
Division
Zusatzaufgabe: Operatoren überladen
Schöner wäre ja, wenn man die mathematischen Operationen, z.B. die Multiplikation nicht mit der Methode mult sondern mit dem bekannten Zeichen/Operator * aufrufen könnte, also:
from rational import Rational
a = Rational(1,2)
b = Rational(1,3)
c = a * b
print(c)Dazu muss man diese Operatoren «überladen». Versuche es!
Hier wird beschrieben, wie das möglich ist:
https://www.geeksforgeeks.org/python/operator-overloading-in-python/
Zusatzaufgabe: weitere Funktionen
Mit Zahlen kann nicht nur gerechnet werden. Man kann sie auch miteinander vergleichen:
from rational import Rational
a = Rational(1,2)
b = Rational(1,3)
print(a < b)Baue Vergleichsoperatoren in deine Klasse Rational ein und teste diese.