Variablen verändern im Loop
Contents
Variablen verändern im Loop#
Mittels For-Loops können bestimmte Programmprozeduren mehrmals hintereinander wiederholt werden. Eine typische Programmprozedur, die innerhalb von For-Loops wiederholt wird, ist das Verändern von Variablen.
Ein Beispiel: Wir haben eine Variable counter
, die zunächst den Wert 0
aufweist. Danach startet ein For-Loop, wobei in jeder Runde des For-Loops die Variable counter
um 1 erhöht wird.
counter = 0
counter
0
for i in range(10):
counter = counter + 1
Da der Loop 10 Runden gelaufen ist und somit die Variable 10 mal um 1 erhöht wurde, weist die Variable counter
nun den Wert 10 auf:
counter
10
Ein weiteres Beispiel: Wir haben eine Population aus Agenten, welche wir in einer Liste speichern. Auch jeder Agent besteht wiederum aus einer Liste. Das erste Element in der Liste eines jeden Agenten repräsentiert jeweils den Namen und das zweite Element repräsentiert jeweils die Anzahl der vom Agenten gegessenen Eiskugeln.
# Population erstellen
population = [["anna", 2], ["tom", 3], ["max", 1], ["lisa", 3]]
Nun wollen wir wissen, wie viele Eiskugeln insgesamt von allen Agenten gegessen wurden. Wir können nun nicht einfach die Eiskugeln zusammenrechnen, da diese ja nicht als einzelne Variablen vorliegen, sondern jeweils schön verpackt innerhalb einer “Agenten-Liste” liegen. Wir müssen also bei jedem Agenten zunächst auf das entsprechende Element zugreifen, um an die Eiskugelanzahl zu kommen und diese für unsere Berechnung zu nutzen.
Eine Möglichkeit, um die Gesamtanzahl an Eiskugeln (für beliebig viele Agenten) berechnen zu lassen sieht so aus: Wir erstellen eine Variable namens kugel_counter
mit dem Wert 0
. Dann gehen wir mittels For-Loop die Liste population
Agent für Agent nacheinander durch und greifen bei jedem Agenten jeweils per Listenindizierung auf die Anzahl der gegessenen Eiskugeln zu und erhöhen die Variable kugel_counter
um genau diesen Wert. Nachdem der For-Loop durchgelaufen ist und die Variable kugel_counter
für jeden Agenten um dessen Anzahl an Eiskugeln erhöht wurde, sollte die Variable kugel_counter
der Gesamtzahl an gegessenen Eiskugeln entsprechen.
# Variable, die die Kugeln Eis zählt
kugel_counter = 0
# Für jeden Agenten
for agent in population:
# Anzahl der Eiskugeln des Agenten abrufen. Die Anzahl der Eiskugeln steht an zweiter Stelle.
anzahl_eiskugeln = agent[1]
# neuen Wert von kugel_counter berechnen
kugel_counter = kugel_counter + anzahl_eiskugeln
# neuen Wert anzeigen lassen
print(kugel_counter)
2
5
6
9
Die Variable kugel_counter
zeigt nun die Summe aller gegessenen Eiskugeln an:
kugel_counter
9
Pro-Tipp
Es gibt in Python für den Fall, in dem der neue Wert einer Variable sich aus dessen altem Wert plus einem weiteren Wert ergibt, eine Kurzschreibweise. Statt wie beispielsweise oben zu schreiben:
counter = counter + 1
hätten wir auch schreiben können
counter += 1
Beide Ausdrücke liefern dasselbe Ergebnis. Ähnliche Kurzschreibweisen gibt es beispielsweise auch noch für Subtraktion, Multiplikation, Division und noch ein paar mehr Operationen. Mehr dazu erfährst du z.B. hier.
Mit For-Loops Listen erstellen#
Eine häufige Anwendung von For-Loops ist auch das Erstellen von Listen. Eigentlich ist das auch nur eine weitere Form davon, wie man mit For-Loops Variablen dauerhaft verändern kann. Praktisch ist das z.B. wenn man große Populationen von Agenten erstellen möchte.
Das Vorgehen ist dabei so: Wir erstellen zunächst eine leere Liste. Dann fügen wir innerhalb eines For-Loops in jeder Runde des Loops ein Element mittels der Listen-Methode append()
zur Liste hinzu. Beispiel:
# leere Liste erstellen
population = []
# 10 mal
for i in range(10):
# neuen Agenten (als Zahl) erstellen
neuer_agent = i*i
# Agenten an Populations-Liste anhängen
population.append(neuer_agent)
# Nach dem Loop die erstellte Liste anzeigen lassen
print(population)
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
Übrigens
Da man sehr oft mittels For-Loop Listen erstellen muss, gibt es in Python auch für das Erstellen mittels For-Loop eine sehr nützliche Kurzschreibweise, die sogenannte list comprehension. Da diese jedoch am Anfang etwas gewöhnungsbedürftig ist und an dieser Stelle noch nicht notwendig ist, werden wir uns diese erst später anschauen.