Verzweigungen

Einführung

Bisher haben wir vordefinierte Aufgaben erledigt, aber einmal ehrlich, die Programme waren kaum komplizierter als eine antike Drehorgel die eine vordefinierte Melodie vom Anfang bis zum Ende abspult. Verzweigugen sind das, was Programmieren sehr viel mächtiger macht. Verzweigungen testen den Inhalt einer Variablen und verhalten sich einmal so falls die Variable einen bestimmten Wert hat, und anders falls nicht. Programmierer nennen Verzweigungen auch if Ausdrücke.

Um zu wissen ob eine Bedingung True oder False ist, brauchen wir einen neuen Datentyp: Boolean. Booleans erlauben logische Operationen, die entweder als wahr oder falsch ausgewertet werden. Unsere Verzweigung kann also folgendermassen verstanden werden:

if (eine Bedingung die als True ausgewertet wird)*:

dann führe diese Anweisungen nur für ‘True’ aus

else:

andernfalls führe diese Anweisungen nur für ‘False’ aus.

Eine Bedingung kann alles sein, was zu wahr (True) oder falsch (False) evaluiert werden kann. Vergleiche ergeben immer wahr oder falsch, zum Beispiel == (ist gleich), > (größer als), < (kleiner als).

Der else Block ist optional. Falls Du ihn auslässt und die Bedingung als ‘False’ ausgewertet wird, passiert nichts weiter.

Beispiele

Hier sind einige Beispiele. Du kannst sie Zeile für Zeile lesen und nachdenken was sie tun, oder gleich ausführen um auf Nummer sicher zu gehen.

condition = True
if condition:
    print("condition met")

if not condition:
    print("condition not met")

direction = -30
if direction > 0 :
    turtle.forward(direction)
else:
    turtle.left(180)
    turtle.forward(-direction)

Die Richtung festlegen

Die Schildkröten in Python sind sehr gut darin, Befehle auszuführen. Lass uns die input() Funktion verwenden, um den Benutzer nach einer Richtung zu fragen, in die die Schildkröte bewegt werden soll. Um es nicht zu kompliziert zu machen, erlauben wir nur zwei Befehle: ‘’links’’ und ‘’rechts’‘.

Bemerkung

Python 2 verwenden? Die Funktion input() heisst auch raw_input().

Es ist viel einfacher dies als eine Funktion zu definieren, etwa folgendermassen:

def move():
    direction = input("Go left or right? ")
    if direction == "left":
        turtle.left(60)
        turtle.forward(50)
    if direction == "right":
        turtle.right(60)
        turtle.forward(50)

Immer wenn Du nun move() verwendest, wirst Du gefragt entweder links oder rechts auszuwählen.

‘’Datenbastelei’‘

In diesem Programm wird die Schildkröte nur auf die Befehle links und rechts reagieren, ohne jegliche Abweichungen. Obwohl Links oder LINKS für einen Menschen das gleiche bedeutet wie links, ist das für ein Programm nicht der Fall. Python hat einige Hilfsmethoden die dabei helfen. Ein String hat die Methoden .strip(), die Leerzeichen und Zeilenumbrüche von den Enden entfernt, und .lower(), welche den gesamten String in Kleinbuchstaben umwandelt.

Here sind einige Beispiele, die die Auswirkungen von .strip() und .lower() illustrieren:

my_variable = "       I Am Capitalised"
print(my_variable)
my_stripped = my_variable.strip()
print(my_stripped)
my_lower = my_variable.lower()
print(my_lower)

Versuche de Befehl direction = direction.strip().lower zu der Funktion move() hinzuzufügen. Beobachte die Auswirkungen. Diese Art von Code wird von uns ‘’data munging’’ (Datenbastelei) genannt. Sie ist sehr häufig.

Kannst Du einig zusätzliche Eingabeoptionen hinzufügen, die die Schildkröte andere Dinge zeichnen lassen? Wie wäre es mit einem ‘’Sechseck’’ (hexagon)?