Aussehen
Entscheidungen
Bis jetzt lief jedes Programm immer gleich ab. Das reicht, solange du die Wiese kennst — aber Kara soll auch dann zurechtkommen, wenn du vorher nicht weißt, was sie vorfindet.
Dafür gibt es if:
python
if treeFront():
print("Autsch, ein Baum!")
else:
move()Zwischen if und dem Doppelpunkt steht eine Bedingung — etwas, das True oder False ergibt. Ist sie wahr, läuft der erste Block. Sonst der zweite.
Entscheidung
Eine Entscheidung wählt zwischen zwei Wegen. Das Programm bleibt dasselbe, aber nicht mehr jede Zeile wird ausgeführt — welche, entscheidet sich erst beim Laufen.
Die Einrückung gehört dazu
In Python sind die vier Leerzeichen am Zeilenanfang keine Zierde. Sie sagen: Diese Zeile gehört zum if. Andere Sprachen benutzen dafür geschweifte Klammern, Python nimmt den Platz.
python
if onBerry():
removeBerry()
print("Lecker!")
move()Die ersten beiden Zeilen passieren nur, wenn Kara auf einer Beere sitzt. Die letzte passiert immer — sie ist nicht eingerückt und gehört deshalb nicht mehr dazu. Verschiebst du sie um vier Leerzeichen nach rechts, tut das Programm etwas anderes.
Achtung
Der häufigste Anfängerfehler ist ein vergessener Doppelpunkt am Ende der if-Zeile. Python meldet dann SyntaxError und zeigt auf die Zeile darunter — der Fehler steckt aber eine Zeile höher.
Aufgabe
Entscheiden heißt nicht reden
Bisher hat die Entscheidung nur eine andere Ausgabe erzeugt. Sie kann aber genauso gut zu einer anderen Handlung führen — und das ist der eigentliche Sinn.
Aufgabe
Mehr als zwei Wege
Manchmal reichen zwei Fälle nicht. Dann kommt zwischen if und else noch ein elif — die Kurzform von „else if":
python
if treeFront():
turnLeft()
elif treeLeft():
turnRight()
else:
move()Python prüft von oben nach unten und nimmt den ersten Zweig, der zutrifft. Alle anderen überspringt es, auch wenn sie ebenfalls wahr wären. Die Reihenfolge ist also nicht egal.
Aufgabe
Bedingungen verbinden
Zwei Bedingungen lassen sich mit and und or zu einer verbinden, und not dreht eine um:
| Schreibweise | Wahr, wenn |
|---|---|
onBerry() and not treeFront() | beides zutrifft |
onBerry() or treeFront() | mindestens eines zutrifft |
not onBerry() | Kara nicht auf einer Beere sitzt |
not wirst du gleich auf der nächsten Seite dauernd brauchen — „laufe, solange kein Baum kommt" ist die häufigste Bedingung in diesem ganzen Kapitel.
Noch mehr üben
Aufgabe
Aufgabe