Condițiile sunt o formă comodă de a lua decizii întrebându-ne dacă ceva are valoare Adevărat sau nu. Dar de multe ori o condiție nu e suficientă. Am putea dori să facem opusul. Sau de exemplu dacă dorim să luăm o decizie bazată pe turtle.xcor()
și``turtle.ycor()`` atunci trebuie să le combinăm. Asta se poate rezolva cu operatori logici.
Dacă dorim ca ceva să fie Fals putem utiliza not
. Este un operator logic:
x = False
if not x :
print("condition met")
else:
print("condition not met")
Țestoasa ne pune la dispoziție o funcție utilă pentru a ști dacă desenează sau nu: turtle.isdown()
. Această funcție returnează Adevărat dacă țestoasa desenează. După cum am văzut mai devreme, funcțiile turtle.penup()
și turtle.pendown()
schimbă între desen și mișcare, sau doar mișcare fără a trasa nici o urmă.
Putem scrie o funcție care înaintează doar dacă penița este ridicată?
def stealthed_forward(distance):
if not turtle.isdown():
turtle.forward(distance)
Doi operatori ușor de înțeles sunt and
(și) și or
(sau). Ei fac exact ce spune numele lor:
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")
Nu ești limitat la un singur operator logic. Poți combina oricâți de mulți dorești.
Mai devreme am pus țestoasa într-o închisoare circulară. De această dată să o punem într-o cutie. Dacă țestoasa merge mai mult de 100 pe axele X sau Y atunci întoarcem țestoasta înapoi spre centru.
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