3. Unterrichtsblock

Kursinhalte
Python If…Else & Bedingte Anweisungen
Python unterstützt die üblichen logischen Bedingungen aus der Mathematik:
- Gleich:
a == b - Ungleich:
a != b - Kleiner als:
a < b - Kleiner oder gleich:
a <= b - Größer als:
a > b - Größer oder gleich:
a >= b
Diese Bedingungen können auf verschiedene Weise verwendet werden, am häufigsten in „if-Anweisungen“ und Schleifen. Eine „if-Anweisung“ wird mit dem if-Schlüsselwort geschrieben.
If-Anweisung:
a = 33
b = 200
if b > a:
print("b ist größer als a")
In diesem Beispiel werden zwei Variablen als Teil der if -Anweisung (a und b) verglichen, um zu prüfen, ob b größer als a ist. Da a 33 und b 200 ist , wissen wir, dass 200 größer als 33 ist, und so geben wir auf dem Bildschirm aus, dass „b größer als a“ ist.
Einrückung
Python vererwendet Einrückungen (Leerzeichen am Anfang einer Zeile), um den Bereich im Code zu definieren. Andere Programmiersprachen verwenden zu diesem Zweck oft geschweifte Klammern.
If-Anweisung ohne Einrückung (wird einen Fehler auslösen):
a = 33
b = 200
if b > a:
print("b ist größer als a") # wird einen Fehler auslösen
Elif
Das Schlüsselwort elif ist Pythons Art zu sagen: „Wenn die vorherigen Bedingungen nicht wahr waren, dann versuche diese Bedingung“.
a = 33
b = 33
if b > a:
print("b ist größer als a")
elif a == b:
print("a und b sind gleich")
In diesem Beispiel ist a gleich b , also ist die erste Bedingung nicht wahr. Die elif Bedingung jedoch schon, also wird auf dem Bildschirm ausgegeben, dass „a und b gleich sind“.
Else
Das Schlüsselwort else fängt alles ab, was nicht auf die vorhergehenden Bedingungen zutrifft.
a = 200
b = 33
if b > a:
print("b ist größer als a")
elif a == b:
print("a und b sind gleich")
else:
print("a ist größer als b")
# Eine "Shorthand" if else-Anweisung mit 3 Bedingungen:
a = 330
b = 330
print("A") if a > b else print("=") if a == b else print("B")
And
Das Schlüsselwort and ist ein logischer Operator und wird verwendet, um bedingte Anweisungen zu kombinieren:
Prüfung, ob a größer als b ist UND ob c größer als ist a:
a = 200
b = 33
c = 500
if a > b and c > a:
print("Beide Bedingungen sind wahr")
Oder
Das or Schlüsselwort ist ein logischer Operator und wird verwendet, um bedingte Anweisungen zu kombinieren:
Prüfung, ob a größer ist als b, ODER ob a größer ist als c:
a = 200
b = 33
c = 500
if a > b or a > c:
print("Eine der Bedingungen ist wahr")
Nicht
Das not Schlüsselwort ist ein logischer Operator und wird verwendet, um das Ergebnis der bedingten Anweisung umzukehren:
Prüfung, ob a NICHT größer ist als b:
a = 33
b = 200
if not a > b:
print("a ist NICHT größer als b")
Verschachteltes wenn
Man kann if Anweisungen innerhalb von if Anweisungen haben, dies wird als verschachtelte if Anweisungen bezeichnet.
x = 41
if x > 10:
print("Größer als 10")
if x > 20:
print("und auch größer als 20.")
else:
print(", aber nicht größer als 20.")
Die Pass-Anweisung
if Anweisungen dürfen nicht leer sein. Wenn jedoch aus irgendeinem Grund eine if Anweisung ohne Inhalt bleibt, fügt man die pass Anweisung ein, um eine Fehlermeldung zu vermeiden.
a = 33
b = 200
if b > a:
pass
Aufgaben
Bearbeite die Aufgaben der Reihe nach. Sage bei jedem Beispiel zuerst voraus, was passiert, und prüfe deine Vermutung danach mit Python. Teste dein Programm nach jedem Schritt mit mehreren Werten. Eingaben liest du mit input() ein, aus dem eingegebenen Text machst du mit int() eine Zahl:
zahl = int(input("Gib eine Zahl ein: "))
Aufgabe 1 – Der Türsteher
Ein Türsteher entscheidet anhand des Alters, wer in den Club darf.
- Frage mit
input()nach dem Alter und wandle die Eingabe mitint()um. - Ab 18 Jahren gibt der Türsteher „Willkommen!“ aus, sonst „Leider zu jung.“.
- Ergänze eine dritte Regel: Ab 16 dürfen Jugendliche bis 22 Uhr hinein. Gib dafür eine passende Meldung aus (Tipp:
elif). - Teste dein Programm mit den Werten 12, 16, 17, 18 und 40.
Frage an dich: Was passiert bei genau 16 und genau 18? Warum ist die Reihenfolge der Bedingungen wichtig? Schreibe die Antwort als Kommentar in deinen Code.
Aufgabe 2 – Finde die Fehler
Das folgende Programm soll prüfen, ob ein Passwort stimmt. Es enthält drei Fehler und läuft so nicht. Kopiere den Code in deinen Editor, repariere ihn Schritt für Schritt und schreibe zu jedem Fehler einen Kommentar, was falsch war.
passwort = "python123"
eingabe = input("Passwort: ")
if eingabe = passwort
print("Zugang erlaubt")
else:
print("Zugang verweigert")
Zusatz: Wie verhält sich dein Programm bei der Eingabe „Python123“? Erkläre es.
Aufgabe 3 – Der Notenrechner
Aus einer Punktzahl (0 bis 100) soll eine Note berechnet werden:
- ab 90 Punkten: Note 1
- ab 75 Punkten: Note 2
- ab 60 Punkten: Note 3
- ab 45 Punkten: Note 4
- ab 20 Punkten: Note 5
- darunter: Note 6
- Frage die Punktzahl mit
input()ab. - Gib die passende Note aus, zum Beispiel „Note: 2“.
- Gib bei den Noten 5 und 6 zusätzlich „Bitte nachlernen!“ aus.
- Was soll dein Programm bei einer Eingabe wie 150 oder -3 tun? Baue eine sinnvolle Meldung ein.
While Schleifen
Python hat zwei einfache Schleifenbefehle:
while-Schleifenfor– Schleifen
Schleifen können mit
Mit der While- Schleife können wir eine Reihe von Anweisungen ausführen, solange eine Bedingung wahr ist. Es können daher neben (==, !=, <, >) auch boolsche Werte (True & False) für Wahrheitsprüfung verwendet werden.
Folgende Schleife gibt i aus, solange i kleiner als 6 ist:
i = 1
while i < 6:
print(i)
i += 1
Hinweis: Man muss
ierhöhen, sonst wird die Schleife für immer fortgesetzt.
Die while-Schleife erfordert, dass relevante Variablen bereit sind. In diesem Beispiel müssen wir eine Indizierungsvariable i definieren , die wir auf 1 setzen.
Folgende Schleife läuft, solange alle darin enthaltenen Bedingungen „wahr“ also True sind
# While-Schleife, die direkt mit 'while True:' beginnt
while True:
print("Die Schleife läuft...")
# Eine Bedingung, um die Schleife zu beenden
# Zum Beispiel: Ein Benutzerinput oder eine bestimmte Logik
antwort = input("Soll die Schleife weiterlaufen? (ja/nein): ")
if antwort.lower() == 'nein':
break # Beendet die Schleife
print("Die Schleife wurde beendet.")
Die Break-Anweisung
Mit der break-Anweisung können wir die Schleife auch dann stoppen, wenn die while-Bedingung wahr ist:
Verlassen der Schleife, wenn i gleich 3 ist:
i = 1
while i < 6:
print(i)
if i == 3:
break
i += 1
Die Continue-Anweisung
Mit der continue-Anweisung können wir die aktuelle Iteration stoppen und mit der nächsten fortfahren:
Fahren Sie mit der nächsten Iteration fort, wenn i 3 ist:
i = 0
while i < 6:
i += 1
if i == 3:
continue
print(i)
Die else-Anweisung
Mit der else-Anweisung können wir einen Codeblock einmal ausführen, wenn die Bedingung nicht mehr erfüllt ist. Die folgende Anweisung gibt eine Nachricht aus, sobald die Bedingung falsch ist:
i = 1
while i < 6:
print(i)
i += 1
else:
print("i ist nicht länger kleiner als 6")
Aufgabe
Baue die Beispiele oben nach und verändere sie: Was passiert, wenn du i += 1 weglässt? (Programm im Terminal mit Strg + C abbrechen.)
Aufgabe 4 – Zahlenraten
Der Computer denkt sich eine Zahl zwischen 1 und 20 aus, du musst sie erraten. Diesen Anfang bekommst du vorgegeben:
import random
geheimzahl = random.randint(1, 20)
tipp = 0
- Wiederhole in einer
while-Schleife so lange die Frage nach einem Tipp, bis der Tipp die Geheimzahl ist. Tipp: Deshalb steht obentipp = 0, damit die Schleife beim ersten Mal startet. - Sage nach jedem falschen Tipp, ob die Geheimzahl höher oder niedriger ist.
- Gib nach der Schleife „Richtig!“ aus.
Zusatzaufgaben: Zähle die Versuche und gib sie am Ende aus. Beende das Spiel mit break, wenn jemand „0“ eingibt. Begrenze das Spiel auf 6 Versuche. Zum Testen kannst du dir die Geheimzahl zunächst mit print() ausgeben lassen.
For-Schleifen
Eine for-Schleife wird zum Iterieren über eine Menge (das ist entweder eine Liste, ein Tupel, ein Dictionary, ein Set oder einen String) verwendet.
Dies ähnelt weniger dem Schlüsselwort
forin anderen Programmiersprachen und funktioniert eher wie eine Iteratormethode, wie sie in anderen objektorientierten Programmiersprachen zu finden ist.
Mit der for-Schleife können wir eine Reihe von Anweisungen ausführen, einmal für jedes Element in einer Liste, einem Tupel, einer Menge usw. Folgendes Programm gibt Früchte in einer Liste aus:
obst = ["Apfel", "Banane", "Birne"]
for x in obst:
print(x)
Die for-Schleife erfordert keine vorab zu setzende Indizierungsvariable.
Schleife durch einen String laufen lassen
Auch Strings sind iterierbare Objekte. Sie enthalten eine Folge von Zeichen. Durchläuft die Buchstaben des Wortes „Banane“ mit einer Schleife:
for x in "Banane":
print(x)
Die Break-Anweisung
Mit der break-Anweisung können wir die Schleife stoppen, bevor sie alle Elemente durchlaufen hat. Folgende Anweisung beendet die Schleife, wenn x „Banane“ ist:
obst = ["Apfel", "Banane", "Birne"]
for x in obst:
print(x)
if x == "Banane":
break
Folgende Anweisung verlässt die Schleife, wenn x „Banane“ ist. Dieses Mal jedoch vor der print-Anweisung:
obst = ["Apfel", "Banane", "Birne"]
for x in obst:
if x == "Banane":
break
print(x)
Die Continue-Anweisung
Mit der continue-Anweisung können wir die aktuelle Iteration der Schleife stoppen und mit der nächsten fortfahren. Banane nicht ausgeben:
obst = ["Apfel", "Banane", "Birne"]
for x in obst:
if x == "Banane":
continue
print(x)
Die range()-Funktion
Um eine Reihe von Codes eine bestimmte Anzahl von Malen zu durchlaufen, können wir die Funktion range() verwenden. Die Funktion range() gibt eine Folge von Zahlen zurück, die standardmäßig bei 0 beginnt und (standardmäßig) um 1 erhöht wird und bei einer bestimmten Zahl endet.
Verwendung der Funktion range():
for x in range(6):
print(x)
Zu beachten ist, dass
range(6)nicht die Werte von 0 bis 6 sind, sondern die Werte von 0 bis 5.
Die Funktion range() hat standardmäßig 0 als Startwert. Es ist jedoch möglich, den Startwert durch Hinzufügen eines Parameters anzugeben: range(2, 6) , was Werte von 2 bis 6 (aber nicht einschließlich 6) bedeutet:
Verwendung des Startparameters:
for x in range(2, 6):
print(x)
Die Funktion range() erhöht die Sequenz standardmäßig um 1, es ist jedoch möglich, den Inkrementwert durch Hinzufügen eines dritten Parameters anzugeben: range(2, 30, 3 ) :
Erhöhen Sie die Sequenz mit 3 (Standard ist 1):
for x in range(2, 30, 3):
print(x)
Else in der For-Schleife
Das else Schlüsselwort in einer for Schleife gibt einen Codeblock an, der ausgeführt werden soll, wenn die Schleife beendet ist. Folgendes Beispiel gibt die Zahlen von 0 bis 5 aus und gibt eine Nachricht aus, wenn die Schleife beendet ist:
for x in range(6):
print(x)
else:
print("Beendet!")
Hinweis: Der
elseBlock wird NICHT ausgeführt, wenn die Schleife durch einebreakAnweisung gestoppt wird.
Unterbrechen der Schleife, wenn x 3 ist. Beobachte, was mit dem else Block passiert:
for x in range(6):
if x == 3:
break
print(x)
else:
print("Beendet!")
Verschachtelte Schleifen
Eine verschachtelte Schleife ist eine Schleife innerhalb einer Schleife.
Die „innere Schleife“ wird einmal für jede Iteration der „äußeren Schleife“ ausgeführt:
Drucken Sie jedes Adjektiv für jede Frucht:
adjektiv = ["rot", "groß", "gut"]
obst = ["Apfel", "Banane", "Kirsche"]
for x in adjektiv:
for y in obst:
print(x, y)
Die Pass-Anweisung
for Schleifen können nicht leer sein, aber wenn man aus irgendeinem Grund eine for Schleife ohne Inhalt hat, fügen man die pass Anweisung ein, um einen Fehler zu vermeiden.
for x in [0, 1, 2]:
pass
Aufgabe
Baue die Beispiele oben nach. Sage vorher voraus: Welche Zahlen gibt range(2, 8) aus? Und range(5)?
Aufgabe 5 – Die Raketen-Startsequenz
- Gib mit einer
for-Schleife undrange()einen Countdown von 10 bis 1 aus. Danach folgt „Start!“. - Gib mit
range()alle Zahlen von 0 bis 100 in Zehnerschritten aus. - Frage nach einer Zahl und gib mit einer
for-Schleife ihr kleines Einmaleins bis zum 10-Fachen aus, zum Beispiel „3 x 4 = 12“. - Berechne die Summe aller Zahlen von 1 bis 100 und gib sie aus. Wenn du Lust hast: Prüfe das Ergebnis mit der Formel von Gauß.
Aufgabe 6 – Schleife trifft Bedingung
Schleifen und if arbeiten zusammen. Löse mindestens zwei der drei Teile:
- Durch 3 teilbar: Gib alle Zahlen von 1 bis 30 aus, die durch 3 teilbar sind (Tipp:
%). Zähle mit, wie viele es sind. - Vokale zählen: Frage einen Text ab und gehe ihn mit
for buchstabe in textdurch. Zähle, wie viele Vokale (a, e, i, o, u) darin vorkommen. - FizzBuzz: Gehe die Zahlen von 1 bis 30 durch. Bei Vielfachen von 3 gibst du „Fizz“ aus, bei Vielfachen von 5 „Buzz“, bei Vielfachen von 3 und 5 „FizzBuzz“. Sonst die Zahl.
Bonusaufgabe – Muster mit verschachtelten Schleifen
Eine Schleife in einer Schleife wiederholt die innere Schleife bei jedem Durchlauf der äußeren Schleife.
- Gib ein 5×5-Feld aus Sternen aus. Tipp:
print("*", end="")bleibt in derselben Zeile, ein leeresprint()beginnt eine neue Zeile. - Gib ein Dreieck aus, das in jeder Zeile einen Stern mehr hat (
*,**,***, …). - Gib das kleine Einmaleins als Tabelle aus (10 Zeilen, 10 Spalten).
