====== 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''.