Una de las principales funciones de la programación es la de decidir qué hacer si determinada situación se cumple, cuándo repetir acciones, cuándo detenerlas o elegir entre varias opciones de acciones a ejecutar. La idea es que tu programa debe examinar un grupo de condiciones y decidir qué curso de acción tomar basado en esas condiciones. La declaración if nos permite examinar el estado actual de nuestro programa y actuar en consecuencia.
La programación en Python se beneficia de las declaraciones condicionales como if, else, y elif, que permiten ejecutar diferentes bloques de código según las condiciones establecidas. Vamos a explorar cada declaración detalladamente con ejemplos prácticos.
Tal vez puedas entender esto mejor si comparas las declaraciones de control directamente con los símbolos de un diagrama de flujo.
Principios de control de flujo en Python
Las declaraciones de control de flujo a menudo inician con una condición y después vienen seguidas de un bloque de código conocido como cláusula. Veamos estos elementos en detalle.
Condiciones
Las expresiones booleanas que vimos anteriormente son también conocidas como condiciones. Siempre se evalúan ya sea a True (verdadero) o False (falso). Nuestras declaraciones de flujo decidirán qué hacer con la ejecución del programa dependiendo de si el valor es True o False.
Bloques de código
Los bloques de código en Python se definen mediante la indentación. Cada línea que pertenece a un mismo bloque debe tener la misma cantidad de espacios al principio. Veamos este ejemplo, es el mismo código que verás debajo en la explicación de la declaración if, pero me servirá para explicar los bloques.
# Declaración if
age = 18
if age >= 18:
print("Eres mayor de edad.") # Aquí inicia un bloque porque cambió la indentación
El flujo del programa
El flujo «normal» de un programa es empezar desde arriba e ir ejecutando líneas de código, una por una, hasta el final del documento. Con las declaraciones de control de flujo puedes modificar este comportamiento porque de acuerdo con determinadas condiciones unas líneas de código se ejecutarán y otras no. Estas fueron muchas palabras y creo que todo cobrará sentido si vemos ejemplos de código para clarificar.
Voy a crear un nuevo archivo condicionales.py para escribir el código de esta lección.
Declaración if
La estructura básica de la declaración if
es simple: si una condición es verdadera, se ejecuta un bloque de código.
# Declaración if
age = 18
if age >= 18:
print("Eres mayor de edad.")
En este caso, el programa imprimirá «Eres mayor de edad» porque la condición age >= 18
es verdadera. Si el valor de age fuera menor que 18, como 16 o 15, no se imprimiría el mensaje.
Declaración else
Opcionalmente se puede añadir un bloque else a la cláusula if. La declaración else
se ejecuta únicamente si la condición en la declaración if
es falsa. La declaración else no tiene condición.
# Declaración else
y = 3
if y > 5:
print("y es mayor que 5")
else:
print("y no es mayor que 5")
Dado que la condición y > 5
es falsa, se ejecuta el bloque else
, imprimiendo «y no es mayor que 5».
Declaración elif (if else anidada)
Se pueden anidar declaraciones if
y else
para manejar múltiples condiciones. La declaración elif es una declaración «else if» que siempre va después de un if o de otra declaración elif. Nos permite verificar una nueva condición si todas las condiciones anteriores fueron False.
# Declaración elif
z = 7
if z > 10:
print("z es mayor que 10")
elif z > 5:
print("z es mayor que 5 pero no mayor que 10")
else:
print("z no es mayor que 5")
Aquí, el programa evalúa las condiciones secuencialmente e imprime el mensaje correspondiente.
Primero, el programa verifica si z es mayor que 10, como no es el caso se va a la siguiente línea donde eválua si z es mayor que 5, como se cumple la condición (se evalúa a True) se imprime el mensaje de ese bloque de código «z es mayor que 5 pero no mayor que 10». Intenta cambiar el valor de z a otros números, 3 o 12 por ejemplo, para que compruebes cómo cambia el mensaje impreso en la consola.
En este punto voy a modificar el programa un poco para que veas que las declaraciones elif pueden aparecer más de una vez en una misma evaluación.
# Declaración elif
z = 7
if z > 10:
print("z es mayor que 10")
elif z > 8:
print("z es mayor que 8 pero no mayor que 10")
elif z == 7:
print("z es exactamente 7")
else:
print("z no es mayor que 5")
Operador ternario
Este operador sirve para daros una versión simplificada del if-else. Para entenderlo comencemos con un if-else regular.
edad = 18
if edad > 20:
print("Tiene más que 20")
else:
print("Tiene menos que 20")
A estas alturas ya sabes cuál es la salida de este programa, fácil. Vamos a hacer algo diferente. El print lo voy a sacar del bloque if-else y voy a crear una variable con el mensaje.
edad = 18
if edad > 20:
mensaje = "Tiene más que 20"
else:
mensaje = "Tiene menos que 20"
print(mensaje)
Este código funciona, pero demos un paso más. Voy a comentar todo el código if-else con Ctrl + } (En Windows).
edad = 18
# if edad > 20:
# mensaje = "Tiene más que 20"
# else:
# mensaje = "Tiene menos que 20"
print(mensaje)
A continuación voy a escribir el ternario para que devuelva un valor si nuestra variable es mayor que 20, y otro diferente si no es el caso.
edad = 18
mensaje = "Tiene más que 20" if edad > 20 else "Tiene menos que 20"
# if edad > 20:
# mensaje = "Tiene más que 20"
# else:
# mensaje = "Tiene menos que 20"
print(mensaje)
El ternario en Python se escribe con un primer valor si la condición del medio es cierta, en este caso if edad > 20 y un segundo valor en el extremo si la condición no es cierta.
Estas declaraciones permiten que un programa tome decisiones dinámicamente, adaptándose a diferentes situaciones durante la ejecución. En la siguiente clase veremos los bucles.