05 - Condiciones (2: elif)
Versión en video (4:28 min):
Fund.Prog con Python 2020
05 - Condiciones (2: elif)
Vamos a profundizar un poco en las condiciones.
Vamos a hacerlo conociendo la orden "elif", que hará que las condiciones largas, encadenadas, resulten más legibles.
Al igual que en las entregas anteriores, nos vamos a nuestro editor online para no tener que instalar nada en principio... De hecho, podemos incluso cambiar la apariencia, decir que queremos un tema oscuro, para que quede un poco más parecido el panel de fuente y el panel de resultados.
Vamos a hacer como ejemplo un programa que nos diga el nombre de los días de la semana, No vamos a comprobar todos los días siquiera, para que no sea muy largo, analizaremos apenas unos pocos días, pero verás que con la estructura que conocemos de la orden "if" convencional, va a ser un tanto engorroso.
Pondremos "día"... va a ser igual al resultado de convertir a entero lo que el usuario introduzca como respuesta a "Dime el día de la semana".
dia = int(input("Dime el día de la semana: "))
Ahora tenderíamos a hacer cosas como estas, es decir, "si el día es igual a uno" (ya sabes, los dos puntos pueden estar juntos o separados):
if dia == 1 :
escribiríamos algo como que "es lunes":
if dia == 1:
print("Lunes")
Pero aquí llega la complicación: voy a comprobar si es el día 2.
Pondría "else" y nuevamente una estructura como esa: Si el día tiene el valor 2, entonces... Y un poco más la derecha. Me vas a escribir que es martes.
dia = int(input("Dime el dia de la semana: "))
if dia == 1:
print("Lunes")
else:
if dia == 2:
print("Martes")
En caso contrario... y esta estructura se va repitiendo, pero cada vez va a estar tabulado más la derecha. En caso contrario me dices que si el día 3... Se trata de un miércoles.
dia = int(input("Dime el dia de la semana: "))
if dia == 1:
print("Lunes")
else:
if dia == 2:
print("Martes")
else:
if dia == 3:
print("Miercoles")
No voy a poner acentos, porque según el entorno que estemos usando puede dar problemas y decir "me falta aquí una directiva"; es un detalle un poco avanzado, en el que no quiero entrar todavía.
Si no es el 3, es el 4. que es el jueves...
dia = int(input("Dime el dia de la semana: "))
if dia == 1:
print("Lunes")
else:
if dia == 2:
print("Martes")
else:
if dia == 3:
print("Miercoles")
else:
if dia == 4:
print("Jueves")
Y no vamos a completar la semana, vamos a parar aquí.
dia = int(input("Dime el dia de la semana: "))
if dia == 1:
print("Lunes")
else:
if dia == 2:
print("Martes")
else:
if dia == 3:
print("Miercoles")
else:
if dia == 4:
print("Jueves")
else:
print("Otro")
Pero la idea es que estamos escribiendo una especie de escalera cada vez más a la derecha. Si fueran muchas condiciones, esto sería ilegible.
Por eso existe otra alternativa.
La alternativa es en vez de "else if" y luego otro "else if" y luego otro "else if", usar la orden "elif", que se usa así, y a cambio, no hace falta tabular nada para atrás.
Si el editor lo permite, podría seleccionar y pulsar "mayúsculas + tabulador" para mover todo hacia atrás...
dia = int(input("Dime el dia de la semana: "))
if dia == 1:
print("Lunes")
elif dia == 2:
print("Martes")
elif dia == 3:
print("Miercoles")
elif dia == 4:
print("Jueves")
else:
print("Otro")
Este formato es más compacto y resulta más legible.
Esta estructura en otros lenguajes es la orden "switch", es la orden "case"... en Python, cuando se trata de varias condiciones encadenadas, lo que haremos simplemente es usar esta estructura en vez de un "else" y tabular todo el "if" a la derecha, otro "else" y el "if" a la derecha y así sucesivamente, pondremos "elif" y la nueva condición, "elif" y la siguiente, "elif" y la siguiente, para terminar con "else" cuando lleguemos a la última condición.
Vamos a comprobar que no hemos pasado nada por alto y que se comporta correctamente...
"Dime el día de la semana", pues le decimos que el 3 y nos dice que es un miércoles.
Dime el dia de la semana: 3
Miercoles
Esta será la forma de trabajar cuando tengamos muchas condiciones encadenadas en Python. En la próxima entrega empezaremos a hablar de cómo comprobar condiciones de forma repetitiva, de cómo hacer lo que llamaremos "bucles".
Ejercicio propuesto 5.1. Pide un número real y responde si es positivo, negativo o cero, empleando "elif".
Ejercicio propuesto 5.2. Pide al usuario un número entero del 1 al 12 y escribe el nombre del mes correspondiente (1=enero, 12=diciembre).