At My Fingertips
Rapid Playground
def einerreihe(stop):
for element in range(1, stop + 1):
print(element, end = ", ")
einerreihe(20)
def funktion_1a(stop):
x = 0
for element in range(stop):
x = x + element
print(x, end = ", ")
funktion_1a(4)
funktion_1a(stop)
hat einen Seiteneffekt: print(x, end = ", ")
. Ein Seiteneffekt ist hier ein Ausgabebefehl wie print(...)
oder show_graphic(...)
, der in einer Funktion ist. Dies ist meist 'schlechter' Stil, jedoch als Debugger nützlich um zu verstehen, welche Werte Variablen zu einem bestimmten Zeitpunkt haben. Der Seiteneffekt ist zudem in der for
-Schleife, deshalb wird bei jedem Schleifendurchlauf etwas über den print
-Befehl ausgegeben.
Anstatt des Seiteneffekts würde eine saubere Codeversion (nur einmal) mit return
einen Rückgabewert zurückgeben, nämlich das Endresultat ohne alle Zwischenschritte:
def funktion_1b(stop):
x = 0
for element in range(stop):
x = x + element
return x
print(funktion_1(4))
Achten Sie auch auf die unterschiedlichen Einzüge des print
-Befehls und des return
-Befehls:
funktion_1a
befindet sich print(x, end = ", ")
in der for
-Schleife.funktion_1b
befindet sich return x
nach der for
-Schleife.Eine Funktion kann überigens einen return
-Befehl nur einmal ausführen. Danach hat der Compiler die Funktion verlassen und geht zum Funktionsaufruf zurück. Ein Seiteneffekt kann dagegen mehrmals pro Funktion ausgeführt werden
Um die sich ändernden Werte von Variablen in Schleifen nachzuvollziehen, erstellen Sie eine Wertetabelle für den Aufruf funktion_1b(6)
:
element | x + element | x (neu) |
---|---|---|
0 | 0 + 0 | 0 |
1 | 0 + 1 | 1 |
2 | 1 + 2 | 3 |
3 | 3 + 3 | 6 |
4 | 6 + 4 | 10 |
5 | 10 + 5 | 15 |
Die erste Spalte gibt für jeden Schleifendurchlauf den Wert der Schleifenvariable element
an. Diese zählt auch die Schleifendurchläufe. Die zweite Spalte zeigt an, welche Werte die Variablen element
und x
annehmen, um den neuen Wert von x
in der dritten Spalte zu berechnen. Mit einer Wertetabelle kann man für jeden Schleifendurchlauf nachvollziehen, was geschieht.
def funktion_2(ende: int):
a = 0
for i in range(ende):
a = a + i + i
print(a, end = ", ")
funktion_2(5)
i | a + i + i | a (neu) |
---|---|---|
0 | 0 + 0 + 0 | 0 |
1 | 0 + 1 + 1 | 2 |
2 | 2 + 2 + 2 | 6 |
3 | 6 + 3 + 3 | 12 |
4 | 12 + 4 + 4 | 20 |
This activity has been created by Gall and is licensed under CC BY-SA 4.0.
Wertetabelle
PyTamaro is a project created by the Lugano Computing Education Research Lab at the Software Institute of USI
Privacy Policy • Platform Version 1cd5229 (Tue, 05 Nov 2024 16:55:57 GMT)