Kontrollstrukturen — if · while · for · List Comprehension
Status: GEPRÜFT, alle Ausgaben mit Python 3.12 verifiziert.
Einrückung = 4 Leerzeichen bzw. Tabulator. Handschriftlich jede Einrückung mit senkrechtem Strich │ markieren.
Bedingung: if / elif / else
if bedingung:
│ # Code, falls bedingung True ist
elif anderebedingung:
│ # Code, falls die True ist
else:
│ # sonst
# hier ohne Einrückung weiterSo bestimmt man das Vorzeichen einer Zahl:
zahl = int(input("Ganze Zahl: "))
if zahl < 0:
│ print("Vorzeichen -")
elif zahl == 0:
│ print("kein Vorzeichen")
else:
│ print("Vorzeichen +")Bedingter Ausdruck (eine Zeile): resultat = wertA if bedingung else wertB, zum Beispiel d = d - 50 if d != None else 0.
pass = Platzhalter, falls ein Block noch leer ist. Blockkommentar mit """…""", Zeilenkommentar mit #.
while-Schleife
Drei Bestandteile: 1) Variable initialisieren, 2) Bedingung, 3) Variable verändern (sonst Endlosschleife!).
i = 1
while i < 4:
│ print(i) # 1 2 3
│ i = i + 1 # kurz: i += 1| Anweisung | Wirkung |
|---|---|
break |
Schleife sofort komplett verlassen (dann kein else) |
continue |
nur diesen Durchlauf abbrechen, weiter mit nächstem |
else: |
läuft, wenn die Schleife regulär endet |
i = 0
while i < 5:
│ i = i + 1
│ if i == 3:
│ │ continue
│ print(i)
else:
│ print("Schleife beendet")
# Ausgabe: 1 2 4 5 Schleife beendetfor-Schleife & range
for element in iterierbares_objekt:
│ print(element)
for zahl in [2, 4, 6, 8]:
│ print(f"Element ist {zahl}")
for zeichen in "Python": # P y t h o n
│ print(zeichen)| Aufruf | Werte |
|---|---|
range(stop) |
0 … stop-1 |
range(start, stop) |
start … stop-1 |
range(start, stop, step) |
mit Schrittweite |
range(3) # 0 1 2
range(1, 3) # 1 2
range(1, 6, 2) # 1 3 5range hört eins vorher auf. Wenn 39 noch dabei sein soll, muss der Stop-Wert 40 heißen → range(12, 40, 3).
Und: range(1, len(liste)) überspringt das erste Element (Index 0). Willst du alle: range(len(liste)) oder gleich for element in liste:.
List Comprehension
liste = [Ausdruck for Element in Iterable if Bedingung][2*x for x in range(1,5)] # [2, 4, 6, 8]
[n for n in range(1,9) if n%2==0] # [2, 4, 6, 8]
[n/2 for n in range(5)] # [0.0, 0.5, 1.0, 1.5, 2.0]
namen = ("Jane","John","Jonas")
[e for e in namen if e.startswith("J")] # ['Jane', 'John', 'Jonas']Dictionary-Comprehension: {x: x**2 for x in range(1,4)} → {1: 1, 2: 4, 3: 9}.
Standard-Muster: Zahlenreihe in 3 Varianten
Zuerst die Reihe aus der Beispielausgabe analysieren: erste Zahl? letzte Zahl? Schrittweite (oder Bedingung wie % 3 == 0)? Für „zwischen 10 und 40, durch 3 teilbar“ → erste 12, letzte 39, Schritt 3.
# (a) while
start = 12
while start <= 39:
│ print(start)
│ start = start + 3
# (b) for
for i in range(12, 40, 3):
│ print(i)
# (c) List Comprehension
werte = [n for n in range(12, 40) if n % 3 == 0]
print(werte)Denkfehler-Falle: „die ersten 7 Zweierpotenzen“ heißt 2⁰ bis 2⁶, also range(0, 7) und nicht range(0, 8). Zähle im Zweifel die Beispielausgabe ab: 1 2 4 8 16 32 64 = 7 Stück.