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]