Condicionales II: Instrucción else y elif
Continuamos con los condicionales viendo las sentencias else y elif
Bienvenidos a esta nueva entrega del curso de programación en Python, donde continuamos explorando las estructuras condicionales. En la lección anterior, analizamos el funcionamiento básico de la instrucción if
. En esta ocasión, profundizaremos aún más al explorar el uso de else
y elif
.
Instrucción else
Como ya hemos visto la instrucción if
en Python se utiliza para evaluar una condición y ejecutar un bloque de código si dicha condición es verdadera. En un contexto de programación, es útil pensar en if
como un «si», seguido de la condición que debe cumplirse. Por ejemplo, «si el usuario es menor de edad, no le permitimos pasar».
Cuando trabajamos con if
, debemos considerar qué hacer si la condición no se cumple. En este punto, entra en juego la instrucción else
. Puede traducirse como «y si no es verdad». A través de else
, podemos definir un bloque de código que se ejecutará si la condición del if
no se cumple.
Tomemos un ejemplo práctico: imaginemos que deseamos controlar el acceso a un lugar para mayores de edad. Le pedimos al usuario que introduzca su edad y, si es menor de 18 años, el programa imprimirá un mensaje indicando que no puede pasar; en caso contrario, permitirá el acceso.
print("Verificación de acceso")
edad_usuario = int(input("Introduce tu edad, por favor: "))
if edad_usuario < 18:
print("No puedes pasar")
else:
print("Puedes pasar")
En este caso, estamos utilizando if
para evaluar si la edad es menor de 18, pero también incluimos else
para especificar qué hacer cuando esa condición no se cumple. Esto garantiza que el programa responda adecuadamente en ambos casos.
Acompañando if
con else
y elif
Es importante destacar que cada else
debe acompañarse de su correspondiente if
. Aunque en Python es posible tener un if
sin else
, esta estructura puede no tener sentido en términos lógicos, pero no generará errores de sintaxis.
Además, podemos continuar programando después de un bloque else
. Por ejemplo, podemos agregar otro mensaje que indique que el programa ha finalizado.
edad_usuario = int(input("Introduce tu edad, por favor: "))
if edad_usuario < 18:
print("No puedes pasar")
else:
print("Puedes pasar")
print("El programa ha terminado")
Al ejecutar este programa, notarás que solo entra en el if
o el else
, pero no en ambos. Si la condición se cumple, ejecuta el if
y luego ignora el else
para continuar con la ejecución del programa. La última línea siempre se imprimirá porque está fuera del bloque if-else
.
Introduce tu edad, por favor: 27
Puedes pasar
EL programa ha terminado
Introduce tu edad, por favor: 17
No puedes pasar
EL programa ha terminado
Manejando Varios else
en un Programa
Una pregunta común en Python es si se pueden tener múltiples else
en un programa. La respuesta es sí, pero con una condición clave: cada else
debe tener su correspondiente if
. No puede haber un else
sin un if
que lo respalde.
Para entender esto en profundidad, exploremos un escenario práctico. Tenemos nuestro programa que verifica edades, y deseamos que el programa responda adecuadamente incluso si se ingresan edades ilógicas o fuera de los rangos normales.
El script actual funciona, pero tiene un problema. Si ingresamos una edad ilógica, como 258 años, el programa aún indicará que podemos pasar debido a que la condición es verdadera. Esto es un error lógico.
Para resolver este problema, necesitamos agregar una validación para edades ilógicas. Por ejemplo, consideremos que 100 años es una edad incorrecta. Para lograrlo, podemos utilizar un segundo if
:
edad_usuario = int(input("Introduce tu edad, por favor: "))
if edad_usuario < 18:
print("No puedes pasar")
if edad_usuario > 100:
print("Edad incorrecta")
else:
print("Puedes pasar")
print("El programa ha terminado")
Sin embargo, hay un problema aquí. El else
actual se asocia solo con el último if
, lo que genera un error en nuestro programa. El else
no tiene conocimiento del primer if
y su lógica. Esto conduce a resultados incorrectos. Un else
, en el caso de que haya varios if
siempre éste va a acompañar del más cercano.
Si ejecutamos el programa y proporcionamos una edad de 27 años, el programa funciona correctamente. Y si ingresamos una edad fuera de rango, como 170 años, también funciona de manera correcta.
Introduce tu edad, por favor: 27
Puedes pasar
El programa ha terminado
Introduce tu edad, por favor: 170
Edad incorrecta
El programa ha terminado
La solución a este problema radica en utilizar elif
. Esta instrucción permite evaluar múltiples condiciones en orden y garantiza que solo se ejecute la primera que sea verdadera. Así, evitamos errores lógicos.
Si introducimos una edad menor de edad, por ejemplo que tenemos 15 años el programa no funciona adecuadamente:
Introduce tu edad, por favor: 15
No puedes pasar
Puedes pasar
El programa ha terminado
Resulta que el programa muestra un comportamiento inesperado cuando ingresamos una edad menor de 18 años, como 15 años. ¿Cómo sucede esto? Para comprenderlo, debemos rastrear el flujo de ejecución del código.
Cuando proporcionamos una edad de 15 años, el programa almacena ese valor en la variable «edad_usuario». Luego, evalúa la primera condición con el if
: ¿es «edad_usuario» menor que 18? La respuesta es sí. Entonces, ejecuta el bloque de código dentro de ese if
, que imprime «No puedes pasar».
Hasta aquí, todo parece lógico. Sin embargo, la ejecución continúa hacia abajo y se encuentra con otro if
. ¿Por qué sucede esto? La respuesta radica en que el segundo if
es independiente del primer if
. No están conectados ni coordinados.
edad_usuario = int(input("Introduce tu edad, por favor: "))
if edad_usuario < 18:
print("No puedes pasar")
if edad_usuario > 100:
print("Edad incorrecta")
else:
print("Puedes pasar")
print("El programa ha terminado")
Como resultado, el programa evalúa la segunda condición: ¿es «edad_usuario» mayor que 100? En este caso, la respuesta es no. Por lo tanto, el bloque de código dentro del segundo if
se ignora.
Finalmente, el programa llega al else
que sigue al segundo if
. Dado que este else
no está vinculado al primer if
, no sabe que ya hemos evaluado una condición anteriormente. Por lo tanto, ejecuta el bloque de código asociado al else
, que imprime «Puedes pasar».
Esta situación genera una salida confusa ya que el programa muestra «No puedes pasar», seguido de «Puedes pasar». Esto es claramente un comportamiento indeseado.
Para evitar este tipo de problemas en programas donde debemos evaluar múltiples condiciones, no debemos depender exclusivamente de la instrucción if
. En su lugar, utilizamos elif
en Python. Esta instrucción nos permite evaluar condiciones adicionales solo si las condiciones anteriores son falsas.
Instrucción elif
La instrucción elif
en Python es fundamental para crear una lógica más clara y precisa en nuestros programas. ¿Cómo funciona exactamente esta instrucción y cómo puede mejorar el flujo de ejecución de nuestro código?
Si en el segundo if
le ponemos elif
, conseguimos con esto que el else
no solo acompañe al if
más cercano sino que acompañe a toda la estructura. Así sí que el else
funciona con los dos condicionales que tiene en la parte superior:
Consideremos el siguiente ejemplo:
edad_usuario = int(input("Introduce tu edad, por favor: "))
if edad_usuario < 18:
print("No puedes pasar")
elif edad_usuario > 100:
print("Edad incorrecta")
else:
print("Puedes pasar")
print("El programa ha terminado")
Lo primero que notamos es que el programa ahora es más claro y eficiente gracias al uso de elif
. Veamos cómo funciona:
- El usuario ingresa su edad, que se almacena en la variable «edad_usuario».
- La primera condición se evalúa: ¿»edad_usuario» es menor que 18? Si es cierto, el programa muestra «No puedes pasar» y no se consideran las condiciones siguientes. En este caso, cuando ingresamos 14 años, esta condición se cumple, y el programa informa que no podemos pasar.
- Si la primera condición no se cumple, el programa pasa a la siguiente condición: ¿»edad_usuario» es mayor que 100? Si es cierto, se muestra «Edad incorrecta». En este caso, si ingresamos una edad extremadamente alta, por ejemplo, 150 años, se activa esta condición y se informa que la edad es incorrecta.
- Si ninguna de las condiciones anteriores se cumple, el programa llega al
else
. Esto significa que «edad_usuario» está entre 18 y 100 años, por lo que se muestra «Puedes pasar».
La ventaja principal de elif
es que nos permite evaluar múltiples condiciones de manera organizada y eficiente. Si una condición es verdadera, no se evalúan las condiciones siguientes. Esto proporciona un control más preciso del flujo del programa.
Si ejecutamos el programa en consola e introducimos una edad menor de 18 que era cuando fallaba, el programa veremos que funciona. Si yo le digo que tengo 14 años, ahora sí que me dice que no puedo pasar porque se cumple el primer condicional y no salta al else
sino que al haber entrado en el primer y ya descarta todo lo demás, por lo que entonces funciona.
Introduce tu edad, por favor: 14
No puedes pasar
El programa ha terminado
Ejemplo de bucle if con varias condiciones
Un ejercicio valioso para comprender el bucle if
en profundidad es crear un programa que evalúe múltiples condiciones. Imagina que, en lugar de preguntar la edad, le pedimos al usuario que ingrese una nota y deseamos calificarla como insuficiente, suficiente, bien, notable o sobresaliente. Esto es posible mediante el uso adecuado de condiciones anidadas en Python.
Comencemos por nombrar nuestra variable nota_alumno
y definir las condiciones:
nota_alumno = int(input("Introduce tu nota, por favor: "))
if nota_alumno < 5:
print("Insuficiente")
elif nota_alumno < 6:
print("Suficiente")
elif nota_alumno < 7:
print("Bien")
elif nota_alumno < 9:
print("Notable")
else:
print("Sobresaliente")
Este código es altamente estructurado y eficiente. Veamos cómo funciona:
- El usuario ingresa una nota, que se almacena en la variable
nota_alumno
. - El programa evalúa las condiciones secuencialmente. Primero, verifica si la nota es menor que 5 y, en ese caso, muestra «Insuficiente».
- Si la primera condición no se cumple, pasa a la siguiente, que verifica si la nota es menor que 6, en cuyo caso muestra «Suficiente».
- El proceso continúa de esta manera: se evalúan las condiciones en orden y se muestra la calificación correspondiente cuando se cumple una de ellas.
- Si ninguna de las condiciones anteriores es verdadera, se ejecuta el
else
y se muestra «Sobresaliente». Esto significa que el estudiante obtuvo una calificación de 9 o más.
El resultado es un programa que evalúa la nota del estudiante y proporciona una calificación acorde. Cada calificación se muestra solo si la nota cumple con los criterios específicos.
El uso de elif
en este contexto es fundamental, ya que permite que todas las condiciones se agrupen en una estructura coherente. El else
final actúa como un último recurso si ninguna de las condiciones anteriores se cumple.
En resumen, este ejemplo ilustra cómo utilizar condiciones múltiples y anidadas en un bucle if
en Python para crear un programa que evalúa una entrada y proporciona una salida basada en múltiples criterios. Practicar ejercicios como este te ayudará a fortalecer tus habilidades de programación en Python. ¡Mantente atento para más lecciones útiles en entregas futuras!