Zusammenfassung – Einfacher Taschenrechner
Teil des Abschnitts Object Oriented Programming der Python-Journey von Coddy — Lektion 8 von 64.
Aufgabe
MittelIhre Calculator-Klasse in calculator.py sollte:
- Einen Konstruktor haben, der ein
result-Attribut mit 0 initialisiert - Methoden für
add,subtract,multiplyunddivideenthalten, die jeweils:- Eine Zahl als Argument entgegennehmen
- Die Operation zwischen dem aktuellen
resultund der Zahl ausführen - Das
result-Attribut aktualisieren - Das neue Ergebnis zurückgeben
- Eine
clear-Methode enthalten, die dasresultauf 0 zurücksetzt - Eine
get_result-Methode enthalten, die das aktuelle Ergebnis zurückgibt - Für die
divide-Methode müssen Sie die Division durch Null behandeln, indem Sie:- Prüfen, ob die angegebene Zahl gleich 0 ist
- Falls sie Null ist, genau dies ausgeben: "Error: Division by zero"
- Das
result-Attribut in diesem Fall unverändert lassen - Den unveränderten
result-Wert zurückgeben
Die Datei driver.py wird Ihre Calculator-Klasse importieren und sie mit Code ähnlich wie diesem testen:
from calculator import Calculator
calc = Calculator()
calc.add(5) # result becomes 5
calc.multiply(3) # result becomes 15
calc.subtract(2) # result becomes 13
calc.divide(0) # prints "Error: Division by zero", result remains 13
calc.divide(2) # result becomes 6.5
calc.clear() # result becomes 0Folgen Sie den TODO-Kommentaren in der Datei calculator.py, um alle erforderlichen Funktionen zu implementieren.
Spickzettel
Erstellen Sie eine Calculator-Klasse mit grundlegenden arithmetischen Operationen:
class Calculator:
def __init__(self):
self.result = 0
def add(self, number):
self.result += number
return self.result
def subtract(self, number):
self.result -= number
return self.result
def multiply(self, number):
self.result *= number
return self.result
def divide(self, number):
if number == 0:
print("Error: Division by zero")
return self.result
self.result /= number
return self.result
def clear(self):
self.result = 0
def get_result(self):
return self.resultAnwendungsbeispiel:
calc = Calculator()
calc.add(5) # result wird 5
calc.multiply(3) # result wird 15
calc.divide(0) # gibt Fehler aus, result unverändertProbier es selbst
from calculator import Calculator
# Testfall-Handler
test_case = input()
if test_case == "constructor_test":
# Testet die Erstellung des Taschenrechners und den Initialzustand
calc = Calculator()
print(f"Initial result: {calc.get_result()}")
print("Calculator created successfully")
elif test_case == "addition_test":
# Testet die Additionsfunktion
calc = Calculator()
result1 = calc.add(10)
print(f"After adding 10: {result1}")
result2 = calc.add(5)
print(f"After adding 5: {result2}")
print(f"Final result: {calc.get_result()}")
elif test_case == "subtraction_test":
# Testet die Subtraktionsfunktion
calc = Calculator()
calc.add(20) # Beginne mit 20
result1 = calc.subtract(8)
print(f"After subtracting 8 from 20: {result1}")
result2 = calc.subtract(2)
print(f"After subtracting 2: {result2}")
print(f"Final result: {calc.get_result()}")
elif test_case == "multiplication_test":
# Testet die Multiplikationsfunktion
calc = Calculator()
calc.add(5) # Beginne mit 5
result1 = calc.multiply(4)
print(f"After multiplying by 4: {result1}")
result2 = calc.multiply(2)
print(f"After multiplying by 2: {result2}")
print(f"Final result: {calc.get_result()}")
elif test_case == "division_test":
# Testet die Divisionsfunktion
calc = Calculator()
calc.add(100) # Beginne mit 100
result1 = calc.divide(4)
print(f"After dividing by 4: {result1}")
result2 = calc.divide(5)
print(f"After dividing by 5: {result2}")
print(f"Final result: {calc.get_result()}")
elif test_case == "division_by_zero_test":
# Testet die Fehlerbehandlung bei Division durch Null
calc = Calculator()
calc.add(50)
print(f"Initial value: {calc.get_result()}")
result = calc.divide(0) # Sollte eine Fehlermeldung ausgeben
print(f"Result after division by zero: {result}")
print(f"Value unchanged: {calc.get_result()}")
elif test_case == "clear_test":
# Testet die Löschfunktion (clear)
calc = Calculator()
calc.add(25)
calc.multiply(3)
print(f"Before clear: {calc.get_result()}")
result = calc.clear()
print(f"After clear: {result}")
print(f"Current result: {calc.get_result()}")
elif test_case == "comprehensive_test":
# Testet alle Operationen nacheinander
calc = Calculator()
# Führt eine Reihe von Operationen aus
calc.add(10) # result = 10
calc.multiply(3) # result = 30
calc.subtract(5) # result = 25
calc.divide(5) # result = 5
print(f"After sequence of operations: {calc.get_result()}")
# Testet die Fehlerbehandlung
calc.divide(0) # Sollte einen Fehler ausgeben
print(f"After division by zero attempt: {calc.get_result()}")
# Löschen und neu beginnen
calc.clear()
calc.add(100)
print(f"After clear and add 100: {calc.get_result()}")
else:
print("Unknown test case")
Alle Lektionen in Object Oriented Programming
1Grundlagen der OOP
Externe DateienEinführung in die OOPKlassen vs. ObjekteDer self-ParameterMethodenAttributeKonstruktor-Methode (__init__)Zusammenfassung – Einfacher Taschenrechner4Vererbung
Grundlagen der VererbungDie super()-FunktionMethoden überschreibenMehrfachvererbungMethod Resolution OrderZusammenfassung - Mitarbeiter-Hierarchie7Spezielle Methoden
Einführung in Magic MethodsOperator-ÜberladungMagic Methods für ContainerRückblick - Eigene Liste10Entwurfsmuster Teil 1
Einführung in EntwurfsmusterSingleton-MusterFactory-MusterObserver-MusterStrategy-Muster13Abschlussherausforderungen
E-Learning-PlattformBanksystemSpielcharakter-EntwicklungFahrzeugvermietung2Dekoratoren
Einführung in DekoratorenProperty-DekoratorStatischer Methoden-DekoratorKlassenmethoden-Dekorator5Polymorphismus
Methoden-Überschreiben vertieftDuck TypingAbstrakte Klassen und MethodenInterface-DesignZusammenfassung – Formen-Rechner8Fortgeschrittene OOP-Konzepte
Komposition vs. VererbungMixinsStatische und KlassenmethodenKlassendekoratorenContext Manager3Klasseneigenschaften
Instanz- vs. KlassenvariablenProperty-DekoratorenPrivate AttributeZusammenfassung – Bankkonto-Manager6Kapselung
Public, Protected, Private MemberZugriffsmodifikatorenInformation HidingProperty-Decorators für FortgeschritteneZusammenfassung - Studentenverwaltungssystem12Projekt: Bibliotheksverwaltung
ProjektübersichtBuch- und Benutzerklassen