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.
Jubel oder Pech
Prüfe, ob Kara auf einer Blaubeere sitzt. Ist das der Fall, soll sie einen Jubelschrei ausstoßen. Sitzt sie auf keiner, soll sie deprimiert ausstoßen, dass sie schon ihr ganzes Leben viel Pech hat.
Probiere beide Ausgangslagen — dein Programm muss beide Male das Richtige sagen.
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.
Aufheben oder hinlegen
Liegt auf Karas Feld eine Blaubeere, hebt sie sie auf. Liegt keine da, legt sie eine hin. Diesmal ohne print().
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.
Wo ist frei?
Steht vor Kara ein Baum, dreht sie sich nach links. Steht links von ihr einer, dreht sie sich nach rechts. Steht nirgends einer, läuft sie einfach los.
Diese Aufgabe hat drei Ausgangslagen. Deine Lösung muss auf allen dreien funktionieren.
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
Erst schauen, dann laufen
Ist vor Kara ein Baum, bleibt sie stehen und sagt es. Sonst läuft sie drei Schritte.
Beides muss stimmen
Kara läuft nur weiter, wenn sie auf einer Blaubeere sitzt und kein Baum vor ihr steht. Drei Ausgangslagen, und nur bei einer darf sie sich bewegen.