Die
Aufgabe bei
Programmieren.ch verlangt, dass ein Skript geschrieben wird, das 2 Brüche addieren kann. Unter Rückgriff auf den
Wikipedia-Artikel „Bruchrechnung“ schien es mir recht einfach die nötige Funktion zu schreiben:
class Bruch(object):
''' Eine Bruch-Klasse, die einen Bruch darstellt
'''
def __init__(self, zaehler, nenner):
self.zaehler = zaehler
self.nenner = nenner
def __add__(self, bruch):
# Ueberlaedt den +-Operator
self.zaehler = self.zaehler * bruch.nenner + bruch.zaehler * self.nenner
self.nenner *= bruch.nenner
return Bruch(self.zaehler, self.nenner)
Mit dem Python-Modul
fractions war die Aufgabe allerdings einfach zu lösen - danke nochmals für den Hinweis von
+Marc Rintsch - und ich muss mir mal was anderes suchen, um daran Objektorientierung zu lernen. Die Lösung mit Python nun:
from fractions import Fraction
b1 = Fraction(2,3)
b2 = Fraction(1,3)
print(b1 + b2)
Python bringt die Batterien mit.
Du darfst in der `__add__()`-Methode das Objekt selbst nicht verändern! Wenn Du ``x = a + b`` schreibst, dann erwartest Du doch zurecht das `a` dabei seinen Wert nicht verändert!
AntwortenLöschenDas `fractions`-Modul aus der Standardbibliothek ist Dir bekannt?
Nein, kann ich bis gerade nicht und habe ich jetzt gefunden. Danke für den Hinweis! Mit dem Modul war die Aufgabe ganz einfach zu lösen.
Löschen