Loops in Python#

Schleifen (ebenfalls ein Kontrollfluss-Tool) werden verwendet, um einen Codeblock wiederholt auszuführen. In Jupyter Notebooks könnten wir eine Codezelle auch einfach manuell so oft wie gewünscht ausführen. Es ist aber effizienter diesen Prozess mit Schleifen zu automatisieren.

Bei Schleifen gibt es in Python zwei Haupttypen:

  1. For-Schleife: Diese Schleife wird üblicherweise verwendet, um über eine Sequenz (z.b. Liste, Tuple, Dictionary, oder Zeichenkette) zu iterieren.

  2. While-Schleife: Diese Schleife wiederholt einen Codeblock so lange, wie eine bestimmte Bedingung erfüllt ist.

Siehe auch:

Die for Schleife#

Um über die Elemente einer Sequenz zu iterieren, können wir for auf die Sequenz anwenden. Dabei müssen wir das aktuell untersuchte Element definieren.

# Beispiel einer for Schleife
fruits = ['apple', 'banana', 'cherry']

for fruit in fruits:
    print('Mmmmh...' + fruit)
Mmmmh...apple
Mmmmh...banana
Mmmmh...cherry

Übung#

Wir können auch range() nutzen, um über Zahlenfolgen zu iterieren. Schreibe einen for Loop, der jede 2. Zahl beginnend von 0 bis 10 ausgibt:

Wenn wir über Elemente einer Liste iterieren und dabei auch mit dem Index des jeweiligen Elements arbeiten wollen, ist die Funktion enumerate nützlich:

# Nummerierung von Elementen einer Sequenz
for index, animal in enumerate(["Dog", "Cat", "Mouse"]):
    print(f"The animal number {index} in the list is {animal}")
The animal number 0 in the list is Dog
The animal number 1 in the list is Cat
The animal number 2 in the list is Mouse

Um über zwei Sequenzen zeitgleich iterieren und deren Elemente paarweise verarbeiten zu können, können wir die Funktion zip nutzen:

# Paarweise verarbeiten von Listen
measurement_1 = [1, 9, 7, 1, 2]
measurement_2 = [4, 5, 5, 7, 4]

for m_1, m_2 in zip(measurement_1, measurement_2):
    print(f"Paired measurements: {m_1} and {m_2}")
Paired measurements: 1 and 4
Paired measurements: 9 and 5
Paired measurements: 7 and 5
Paired measurements: 1 and 7
Paired measurements: 2 and 4

Daten mit einem for Loop generieren#

Ein for Loop wir häufig genutzt, um Inhalte für eine Liste zu generieren bzw. diese zu füllen. Der konventionelle Weg das zu tun umfasst mehrere Zeilen Code:

# Wir starten mit einer leeren Liste
numbers = []

# ...und fügen innerhalb eines for Loop Elemente an
for i in range(0, 5):
    numbers.append(i * 2)
    
print(numbers)
[0, 2, 4, 6, 8]

Wir können das auch kürzer schreiben. Das zugrunde liegende Konzept heißt Generatoren.

Dies ist Teil dessen, was die Python-Gemeinschaft „The Pythonic Way“ nennt - die Nutzung von verfügbaren Funktionen und Konzepten, um möglichst kurzen, sauberen und verständlichen Code zu schreiben.

numbers = [i * 2 for i in range(0, 5)]

print(numbers)
[0, 2, 4, 6, 8]

Die while Schleife#

Ein while Loop wird so lange ausgeführt, wie die angegebene Bedingung True ist. Die Bedingung wird vor jedem Schleifen-Durchlauf geprüft, ähnlich wie bei einer if-Anweisung. Die Ausführung wird unterbrochen, sobald die Bedingung nicht mehr wahr, also False ist. Achte darauf, die Elemente der Bedingung innerhalb der Schleife entsprechend zu aktualisieren, da dies sonst zu einer Endlosschleife führen kann.

# Beispiel eines while Loop
count = 0

while count < 5:
    print('Count:', count)
    count += 1
Count: 0
Count: 1
Count: 2
Count: 3
Count: 4

Übung#

Schreibe einen while Loop, der eine anzugebende Zahl solange halbiert und ausgibt, wie diese Zahl größer als 1 ist.

Schleifen unterbrechen#

Loops können an beliebigen Stellen des Codes mit dem Kommando break unterbrochen werden. Dies wird häufig genutzt, um die Durchläufe bei Erreichen einer bestimmten Bedingung abzubrechen und dabei mit einer if-Anweisung kombiniert.

for i in range(10):
    print(i)
    if i > 3:
        break
0
1
2
3
4

Durchläufe in Schleifen überspringen#

Um Schleifen-Durchläufe, z.b. unter bestimmten Bedingungen, zu überspringen, kann continue genutzt werden. Häufig wird dies mit einer if-Anweisung kombiniert.

for i in range(0, 10):
    if (i >= 2) and (i <= 7):
        continue
    print(i)
0
1
8
9

Übung#

Angenommen, wir haben eine Liste von Dateinamen und wollen etwas mit ihnen machen, zum Beispiel die Namen ausgeben oder Inhalte bearbeiten. Programmieren Sie eine for-Schleife, die alle Dateinamen ausgibt, die mit „txt“ enden.

Hierzu sind evtl. auch eingebaute Methode für Strings ganz nützlich.

file_names = ['dataset1.txt', 'dataset2.txt', 'summary.csv', 'readme.md', 'interviews.txt']