Los condicionales son una muy buena forma de tomar decisiones preguntando si algo es igual a True o no. Pero a menudo una condición no es suficiente. Podríamos querer tomar lo opuesto a nuestro resultado. O por ejemplo si queremos tomar una decisión sobre turtle.xcor()
y turtle.ycor()
debemos combinarlos. Esto puede realizarse con operadores lógicos.
Si queremos que algo sea False podemos usar not
. Es un operador lógico:
x = False
if not x :
print("condition met")
else:
print("condition not met")
El programa turtle nos da una función muy útil para saber si se está dibujando o no: turtle.isdown()
. Esta función retorna True si la tortuga está dibujando. Como hemos visto anteriormente, la función turtle.penup()
y turtle.pendown()
conmuta entre dibujar mientras se está moviendo, o solo moverse sin dejar trazo.
Podemos escribir una función que permita ir adelante solamente si el lápiz está levantado?
def stealthed_forward(distance):
if not turtle.isdown():
turtle.forward(distance)
Dos operadores fáciles de entender son and
y or
. Ellos hacen exactamente lo que dicen sus nombres::
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")
No está restringido a un operador lógico. Puede combinar tantos como quiera.
Antes pusimos a la tortuga en una prisión circular. Ahora hagamos la prisión cuadrada. Si la tortuga intenta ir a más de 100 en el eje X or en el eje Y, entonces retornemos a la tortuga de vuelta al centro.
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