6. Bedingungen und Schleifen#

In der Programmierung hört es meist nicht bei der Erstellung von Variablen auf. Häufig möchtest du bestimmte Aktionen nur unter bestimmten Bedingungen ausführen oder Aktionen mehrmals wiederholen. Hier kommen Bedingungen und Schleifen ins Spiel.

Bedingungen#

Bedingungen werden genutzt, um zu prüfen, ob eine Aussage wahr oder falsch ist. Wenn die Aussage wahr ist, wird eine bestimmte Aktion ausgeführt. Wenn die Aussage falsch ist, wird eine andere Aktion ausgeführt. Solche Bedingungen sind immer binär und können daher als Boolean (True oder False) dargestellt werden.

Wir prüfen Bedingungen mit dem Schlüsselwort if. Der zugehörige eingerückte Codeblock wird nur dann ausgeführt, wenn die Bedingung erfüllt ist.

boolean = True
if boolean:
    print("The boolean is true")
The boolean is true

Mit else kannst du definieren, was passiert, wenn die Bedingung nicht erfüllt ist:

number = 4
if number > 5:
    print("The number is larger than 5")
else:
    print("The number is not larger than 5")
The number is not larger than 5

Mit elif (else if) kannst du mehrere Bedingungen prüfen:

number = 6
if number > 10:
    print("The number is larger than 10")
elif number > 5:
    print("The number is larger than 5 but smaller or equal to 10")
elif number > 0:
    print("The number is larger than 0 but smaller than 5")
else:
    print("The number is smaller or equal to 0")
The number is larger than 5 but smaller or equal to 10

Übung 1#

Schreibe ein Programm, das nach dem Alter fragt und sagt, ob die Person volljährig ist (ab 18 Jahren).

age = 19
if age >= 18:
    print("You are an adult.")
else:
    print("You are not adult.")
You are an adult.

Schleifen#

Note

Copy-Pasting Mehrfaches Kopieren von Code ist ineffizient und führt zu Fehlern, die an mehreren Stellen korrigiert werden müssten. Verwende stattdessen Schleifen.

Wenn du eine Aktion mehrfach wiederholen willst, verwende Schleifen. Es gibt zwei Hauptarten von Schleifen in Python: while-Schleife und for-Schleife.

while-Schleife#

Eine while-Schleife wiederholt ihren Codeblock, solange eine Bedingung erfüllt ist:

number = 0
while number < 10:
    number += 1
    print(number)
print("Loop has ended")
1
2
3
4
5
6
7
8
9
10
Loop has ended

Wenn die Bedingung zu Beginn nicht erfüllt ist, wird der Codeblock gar nicht ausgeführt:

number = 11
while number < 10:
    number += 1
    print(number)
print("Loop has not been executed")
Loop has not been executed

Man kann while True: verwenden und mit break gezielt abbrechen:

number = 0
while True:
    if number >= 10:
        break
    number += 1
    print(number)
print("Loop has ended")
1
2
3
4
5
6
7
8
9
10
Loop has ended

Kombination mit Bedingungen:

number = 0
limit = 8
while number < 10:
    number += 1
    if number == limit:
        break
    print(number)
print("Loop has ended")
1
2
3
4
5
6
7
Loop has ended

Übung 2#

Verwende eine while-Schleife, um von 1 bis 20 zu zählen, aber gib nur gerade Zahlen aus:

number = 1
while number <= 20:
    if number % 2 == 0:
        print(number)
    number += 1
2
4
6
8
10
12
14
16
18
20

Übung 3#

Verwende while True: und break, um einen Zähler bis 3 zu zählen:

counter = 0
while True:
    if counter == 3:
        break
    print(counter)
    counter += 1
0
1
2

for-Schleife#

Wenn du über eine Liste oder ein iterierbares Objekt gehen willst, nutze die for-Schleife:

numbers = range(0, 10)
for number in numbers:
    print(number)
print("Loop has ended")
0
1
2
3
4
5
6
7
8
9
Loop has ended

Mit enumerate kannst du gleichzeitig über Index und Wert iterieren:

numbers = range(0, 10)
larger_numbers = range(10, 20)

for index, number in enumerate(numbers):
    print(larger_numbers[index] + number)
print("Loop has ended")
10
12
14
16
18
20
22
24
26
28
Loop has ended

Auch in einer for-Schleife kannst du mit break abbrechen:

for number in range(0, 10):
    if number > 7:
        break
    print(number)
print("Loop has ended")
0
1
2
3
4
5
6
7
Loop has ended

Übung 4#

Berechne die Summe einer Liste von Zahlen mit einer for-Schleife:

numbers = [3, 5, 7, 9, 11]
sum = 0
for i in numbers:
    sum += i
print(sum)
35

List Comprehension#

Mit einer List Comprehension kannst du Listen mit Schleifen in einer einzigen Zeile erzeugen:

numbers = range(0, 10)
larger_numbers = range(10,20)
even_larger_numbers = [number + larger_numbers[index] for index, number in enumerate(numbers)]
print(even_larger_numbers)
[10, 12, 14, 16, 18, 20, 22, 24, 26, 28]

Du kannst Bedingungen innerhalb einer List Comprehension verwenden:

[number if number % 2 == 1 else number / 2 for number in range(0, 10)]
[0.0, 1, 1.0, 3, 2.0, 5, 3.0, 7, 4.0, 9]

Übung 5#

Nutze eine List Comprehension, um eine Liste zu erstellen, die die Quadrate der geraden Zahlen von 1 bis 20 enthält und 0 für ungerade Zahlen:

new_list = [i ** 2 if i % 2 == 0 else 0 for i in range(1, 20)]
print(new_list)
[0, 4, 0, 16, 0, 36, 0, 64, 0, 100, 0, 144, 0, 196, 0, 256, 0, 324, 0]