Direkt zum Hauptinhalt springen
eLearner.app
Modul 2 · Lektion 1 von 45/36 im Kurs~10 min
Lektionen des Moduls (1/4)

for-Schleifen und range

Die for-Schleife in Python wird verwendet, um über eine Sequenz von Elementen zu iterieren: eine Liste, einen String, eine Range, ein Dictionary... alles, was "iterable" ist.

Python
parole = ["ciao", "mondo", "!"]
for p in parole:
    print(p)
# ciao
# mondo
# !

Das Muster ist immer dasselbe: for <variable> in <iterable>: gefolgt von dem eingerückten Block, der einmal für jedes Element ausgeführt wird.

range(...): Erzeugen ganzzahliger Intervalle

range erzeugt eine Lazy-Sequenz von Integern. Drei Formen:

Python
range(5)         # 0, 1, 2, 3, 4
range(2, 6)      # 2, 3, 4, 5
range(0, 10, 2)  # 0, 2, 4, 6, 8     (step)
range(5, 0, -1)  # 5, 4, 3, 2, 1     (negative step)

range ist am rechten Ende exklusiv, wie slice. Es ist ein Lazy-Objekt: es reserviert keinen Speicher für alle Zahlen, sondern erzeugt sie einzeln nacheinander.

Python
totale = 0
for i in range(1, 11):
    totale = totale + i
totale  # 55  (1+2+...+10)

Iterieren mit einem Index: enumerate

Wenn du das Element und seinen Index zusammen benötigst, verwende enumerate:

Python
parole = ["ciao", "mondo", "!"]
for i, p in enumerate(parole):
    print(i, p)
# 0 ciao
# 1 mondo
# 2 !

enumerate erzeugt Paare (index, value), die wir direkt zwei Variablen über das Entpacken von Tupeln zuweisen.

Iterieren von zwei Sequenzen in Parallelität: zip

Python
nomi = ["Ada", "Linus", "Grace"]
anni = [36, 54, 79]
for n, a in zip(nomi, anni):
    print(f"{n} ha {a} anni")

zip stoppt bei der kürzesten Sequenz.

range() und Pythons Trägheit (Laziness)

In Python reserviert die Funktion range() keine tatsächliche Liste im Speicher: Sie gibt einen Lazy Generator zurück, der Zahlen bei Bedarf einzeln liefert (z.B. in einer for-Schleife). Dies ermöglicht die Iteration über Millionen von Integern, ohne den RAM zu überlasten. Um Range-Werte als Liste zu untersuchen, kannst du sie explizit mit list(range(5)) konvertieren.

Probiere es aus

Übung#python.m2.l1.e1
Versuche: 0Wird geladen…

Berechne die Summe der Zahlen von 1 bis 100 (inklusive) unter Verwendung einer for-Schleife über range(...), weise die Summe `total` zu und evaluiere sie.

Editor wird geladen…
Hinweis anzeigen

range(1, 101) erzeugt 1, 2, ..., 100 (exklusiv auf der rechten Seite).

Lösung nach 3 Versuchen verfügbar

Wiederholungsübung

Übung#python.m2.l1.e2
Versuche: 0Wird geladen…

Gegeben sei die Liste `words = ['uno', 'due', 'tre']`. Baue eine Liste `pairs` von Strings wie '0:uno', '1:due', '2:tre' unter Verwendung von enumerate auf. Evaluiere `pairs`.

Editor wird geladen…
Hinweis anzeigen

enumerate(words) gibt bei jeder Iteration (index, value) zurück.

Lösung nach 3 Versuchen verfügbar

Zusätzliche Herausforderung

Übung#python.m2.l1.e3
Versuche: 0Wird geladen…

Berechne die Summe aller geraden Zahlen von 2 bis einschließlich 20 unter Verwendung einer `for`-Schleife über eine `range`. Speichere die Gesamtsumme in `even_sum` und evaluiere sie.

Editor wird geladen…
Hinweis anzeigen

Verwende range(2, 21, 2), um nur über gerade Ganzzahlen von 2 bis 20 zu iterieren.

Lösung nach 3 Versuchen verfügbar