Verzweigungen sind ein guter Weg um im Programm Entscheidungen zu treffen, indem geprüft wird ob etwas True ist oder nicht. Aber häufig reicht eine Bedingung allein nicht aus. Vielleicht möchtest Du auch das Gegenteil Deines Ergebnisses prüfen. Oder falls Du eine Entscheidung aufgrund von turtle.xcor()
und turtle.ycor()
treffen möchtest, musst Du beide verknüpfen. Das kannst Du mit logischen Operatoren erreichen.
Wenn wir möchten, dass etwas False ist, können wir den logischen Operator not
verwenden:
x = False
if not x :
print("condition met")
else:
print("condition not met")
Die Schildkröte enthält eine nützliche Funktion die sagt ob grade gezeichnet wird oder nicht; turtle.isdown()
. Diese Funktion liefert True falls die Schildkröte im Zeichenmodus ist. Wie wir bereits gesehen haben, schalten die Funktionen turtle.penup()
und turtle.pendown()
zwischen dem Modus zum Zeichnen beim Bewegen und dem Bewegungsmodus ohne Zeichnen hin und her.
Können wir eine Funktion schreiben die nur vorwärts geht falls die Schildkröte nicht im Zeichenmodus ist?
def stealthed_forward(distance):
if not turtle.isdown():
turtle.forward(distance)
Zwei einfach zu verstehende Operatoren sind and
und or
. Sie tun genau das wonach sie sich anhören::
if 1 < 2 and 4 > 2:
print("condition met")
if 1 > 2 and 4 < 10:
print("condition not met")
if 4 < 10 or 1 < 2:
print("condition met")
Du bist nicht darauf angewiesen nur einen logischen Operator zu verwenden. Du kannst so viele miteinander kombinieren wie Du möchtest.
Weiter oben haben wir die Schildkröte in einem kreisförmigen Gefängnis eingesperrt. Diesmal werden wir ein Quadrat dazu verwenden. Falls die Schildkröte sich mehr als 100 Einheiten entlang der x- oder y-Achse vom Mittelpunkt entfernt, drehen wir sie zurück zur Mitte um.
def forward(distance):
while distance > 0:
if (turtle.xcor() > 100
or turtle.xcor() < -100
or turtle.ycor() > 100
or turtle.ycor() < -100):
turtle.setheading(turtle.towards(0,0))
turtle.forward(1)
distance = distance - 1