Schleifen

In Python gibt es zwei Schleifen. Einmal die for und dann die while Schleife.

For Schleife

Die for Schleife wird sehr oft mit range verwendet.

print("Iteration over range:\n")
for i in range(4):
    print(i)
Iteration over range:

0
1
2
3

Die Schleife kann man auch von einen Startwert verschieden von 0 starten.

print("Iteration over range:\n")
for i in range(1, 5):
    print(i)
Iteration over range:

1
2
3
4

Auch kann eine Schrittweite verschieden von 1 definieren.

print("Iteration over range:\n")
for i in range(2, 8, 2):
    print(i)
Iteration over range:

2
4
6

Das Schlüsselwort break bricht die Schleife ab.

for x in range(10):
    # Check if x is even
    if x > 5:
        break
    print(x)
0
1
2
3
4
5

Das Schlüsselwort continue beendet die Schleife nicht, sondern setzt die Schleife mit der nächsten Iteration fortgesetzt.

for x in range(10):
    # Check if x is even
    if x % 2 == 0:
        continue
    print(x)
1
3
5
7
9

Auch Datentypen str, list, tuples, set und dict können mit der for Schleife sehr elegant durchlaufen werden.

print("String Iteration:\n")
for l in "Null":
    print(l)
String Iteration:

N
u
l
l
print("List Iteration:\n")
l_numbers = ["Eins", "Zwei", "Drei"]
for numbers in l_numbers:
    print(numbers)
List Iteration:

Eins
Zwei
Drei
print("Tuple Iteration:\n")
t_numbers = ("Eins", "Zwei", "Drei")
for i in t_numbers:
    print(i)
Tuple Iteration:

Eins
Zwei
Drei
print("Set Iteration:\n")
s_numbers = {"Eins", "Zwei", "Drei"}
for i in s_numbers:
    print(i)
Set Iteration:

Drei
Eins
Zwei
print("Dictionary Iteration:\n")  
d = dict()
d['Eins'] = 1
d['Zwei'] = 2
d['Drei'] = 3
for i in d :
    print("%s  %d" %(i, d[i]))
Dictionary Iteration:

Eins  1
Zwei  2
Drei  3

For Schleife mit enumerate()

l_numbers = ["Eins", "Zwei", "Drei"]
for i in range(len(l_numbers)):
    print("Index: ",i ,"Element:", l_numbers[i])
Index:  0 Element: Eins
Index:  1 Element: Zwei
Index:  2 Element: Drei

Eine sehr hilfreiche BuiltIn Funktion ist enumerate(). Gerade gemeinsam mit der for Schleife ist diese sehr oft anzutreffen. enumerate() liefert einen laufenden Index und ein Element.

l_numbers = ["Eins", "Zwei", "Drei"]
for ele in enumerate(l_numbers):
    print("Zahl:", ele)
Zahl: (0, 'Eins')
Zahl: (1, 'Zwei')
Zahl: (2, 'Drei')

Der Index und das Element können auch getrennt werden.

l_numbers = ["Eins", "Zwei", "Drei"]
for i, ele in enumerate(l_numbers):
    print("i:", i, "Zahl:", ele)
i: 0 Zahl: Eins
i: 1 Zahl: Zwei
i: 2 Zahl: Drei

Der Startwert des Index kann angegeben werden.

l_numbers = ["Eins", "Zwei", "Drei"]
for i, ele in enumerate(l_numbers, 100):
    print("i:", i, "Zahl:", ele)
i: 100 Zahl: Eins
i: 101 Zahl: Zwei
i: 102 Zahl: Drei

enumerate() funktioniert auch gemeinsam mit tuples.

t_numbers = ("Eins", "Zwei", "Drei")
for i, ele in enumerate(t_numbers):
    print("i:", i, "Zahl:", ele)
i: 0 Zahl: Eins
i: 1 Zahl: Zwei
i: 2 Zahl: Drei

enumerate() funktioniert auch gemeinsam mit tuples.

s_numbers = {"Eins", "Zwei", "Drei"}
for i, ele in enumerate(s_numbers):
    print("i:", i, "Zahl:", ele)
i: 0 Zahl: Drei
i: 1 Zahl: Eins
i: 2 Zahl: Zwei

enumerate() funktioniert auch gemeinsam mit dict, jedoch sollte der Schlüssel und der Wert gleich getrennt werden.

d_numbers = {1: "Eins", 2: "Zwei", 3: "Drei"}
for i, (key, val) in enumerate(d_numbers.items()):
    print("i:", i, "key:", key, 'value', val)
i: 0 key: 1 value Eins
i: 1 key: 2 value Zwei
i: 2 key: 3 value Drei

Alternative können wir mit Hilfe des Schlüssels den Wert des Wörterbuchs auslesen.

for i, key in enumerate(d_numbers):
    print("{}) key: {}, value: {}".format(i, key, d_numbers[k]))
0) key: 1, value: Drei
1) key: 2, value: Drei
2) key: 3, value: Drei

While Schleife

Eine typische while Schleife sieht wie folgt aus.

i = 0
condition = True

while condition == True:
    print(i)
    i = i+1
    if(i>5):
        condition = False
0
1
2
3
4
5

Solange die Bedingung condition erfüllt ist wird die Schleife endlos durchlaufen.

Das Schlüsselwort else erlaubt einen Block nach der Schleife auszuführen.

i = 0
condition = True

while condition == True:
    print(i)
    i = i+1
    if(i>5):
        condition = False
else:
    print("i = {} ist nicht größer als 6".format(i))
0
1
2
3
4
5
i = 6 ist nicht größer als 6

Auch hier gibt es mit break die Möglichkeit eine Schleife abzubrechen.

i = 0
while True:
    print(i)
    i = i+1
    if(i>5):
        break
0
1
2
3
4
5

Mit continue wird die Schleife mit der nächsten Iteration fortgesetzt.

i = 0
while i < 6:
    i += 1
    if i == 3 or i == 4:
        continue
    print(i)
1
2
5
6