====== LU03.L07 - Abschreibung von Anlagen====== ===== Herleitung über alle fünf Schritte ===== Die Animation geht die [[modul:m323:learningunits:lu03:rekursion2|5-Schritte-Methode]] durch und baut in Schritt 5 den Code unten Zeile für Zeile auf. Jede Zeile wird auf die Regel zurückgeführt, aus der sie stammt. {{url>https://templates-python.github.io/m323_html/lu03/l07-abschreibung.html 100%,960px noborder|Animation: Abschreibung, von der Regel zum Code}} ===== Musterlösung ===== def calculate_depreciation(initial_value, depreciation_rate, years): """ Berechnet den Restwert einer Anlage nach einer bestimmten Anzahl von Jahren unter Berücksichtigung der jährlichen Abschreibung. Args: initial_value (float): Der Anfangswert der Anlage. depreciation_rate (float): Der jährliche Abschreibungssatz als Dezimalzahl (z.B. 0.10 für 10%). years (int): Die Anzahl der Jahre, für die die Abschreibung berechnet werden soll. Returns: float: Der Restwert der Anlage nach der gegebenen Anzahl von Jahren. Raises: ValueError: Wird geworfen, wenn der Abschreibungssatz nicht zwischen 0 und 1 liegt. ValueError: Wird geworfen, wenn die Anzahl der Jahre negativ ist. """ if depreciation_rate < 0 or depreciation_rate > 1: raise ValueError("Der Abschreibungssatz muss zwischen 0 und 1 liegen.") if years < 0: raise ValueError("Die Anzahl der Jahre kann nicht negativ sein.") if years == 0: return initial_value return calculate_depreciation(initial_value * (1 - depreciation_rate), depreciation_rate, years - 1) Die Reihenfolge im Funktionsrumpf ist nicht beliebig: zuerst die beiden Prüfungen, dann der Base Case, zuletzt der rekursive Aufruf. Steht der Base Case nach dem rekursiven Aufruf, wird er nie erreicht; fehlt die Prüfung auf negative Jahre, zählt ''years'' an der 0 vorbei und die Rekursion endet im ''RecursionError''.