Condicionales en Python
¿Qué es un condicional?
Las condicionales permiten que un programa tome decisiones dependiendo de si una condición es verdadera (True) o falsa (False).
En Python siguen esta estructura:
if condicion:
# código
elif otra_condicion:
# código
else:
# código
Estructura básica if
El bloque if ejecuta el código a continuación solo si la condición es verdadera. El código que se ejecutarña si se cumple la condición está "dentro" del if, es decir, tabulado a la derecha.
edad = 20
if edad >= 18:
print("Eres mayor de edad")
En este ejemplo el mensaje "Eres mayor de edad" se muestra solamente si la edad supera los 18.
Es muy importante tener en cuenta que solamente el código tabulado a la derecha abajo del if está ligado a la condición. Podemos poner tantas líneas de código como queramos.
numero = 7
numero2 = 1
if numero >= 5:
print("Número mayor a 5") # Número mayor a 5
numero = numero - numero2
print("Ahora el número es", numero) # Ahora el número es 6
Sin embargo, todo código de más abajo que esté a la misma altura del if (no tabulado) ya no forma parte del mismo, por lo que se ejecutará se cumpla o no la condición.
numero = 3
if numero >= 5:
print("Número mayor a 5") # se ejecuta solo si se cumple la condición
print('FIN') # se ejecuta SIEMPRE, se cumpla o no la condición
Signos en las condiciones
| Signo | significado | Ejemplo |
|---|---|---|
> | Mayor que | numero > 10 |
< | Menor que | numero < 10 |
== | Igual | numero == 10 |
!= | Distinto | numero != 10 |
>= | Mayor o igual que | numero >= 10 |
<= | Menor o igual que | numero <= 10 |
if temperatura > 30:
print("Hace calor")
if usuario != "admin":
print("Acceso prohibido")
Bloque else
Solamente puede usarse si acompaña a un if, nunca en solitario. El bloque else abarca el código que queremos que se ejecute si NO se cumple la condición del if.
edad = 15
if edad >= 18:
print("Eres mayor de edad") # se ejecuta si se cumple la concidión
else:
print("Eres menor de edad") # se ejecuta si NO se cumple la concidión del if
# Resultado: Eres menor de edad
Múltiples condiciones elif
A veces no todo es blanco o negro. Es decir no es todo o se cumple el if o no se cumple (else). A veces hay más de dos posibilidades.
El bloque elif nos permite evaluar varias condiciones. Siempre en orden, es decir, de arriba a abajo.
nota = 7
if nota == 10:
print("Matrícula de honor")
elif nota >= 7:
print("Aprobado alto")
elif nota >= 5:
print("Aprobado")
else:
print("Suspendido")
# Resultado: Aprobado altos
El anterior código se interpreta como:
- Si mi nota es 10, imprimiré "Matrícula de honor"
- Si no es 10 voy a contemplar más posibilidades:
- Que sea > = 7
- Que sea > = 5
- Cualquier otra cosa
Las intrucciones if elif else se evalúan de arriba a abajo. Es decir, si se cumple la condición del if, el programa imprimirá "Matrícula de honor" y se saltará los elif y el else, porque las condiciones son excluyentes entre ellas, y si se cumple el if sé que el resto no se cumplirán.
Si el if no se cumple, el programa pasa a evaluar la condición del primer elif. Si está se cumple imprime "Aprobado alto" y termina, sin siquiera entrar a evaluar el resto de condiciones. Sigue esta misma dinámica con tantos elif tengamos, es decir, si se cumple su condición ejecuto su código y termino, y si no se cumple paso a evaluar el siguiente elif a ver si ese se cumple.
Si al llegar abajo ninguno se los elif se han cumplido, imprimirá el código del else.
En resumen, Python evalúa una por una hasta encontrar una verdadera; luego ignora el resto.
Dos o más if seguidos
Hemos visto que la estructura if elif else son excluyente entre ellas, y que si una se cumple python ignora el resto de abajo.
Sin embargo, no ocurre no mismo con estructura if if.
numero = 5
if numero > 3:
print("Número mayor que 3")
if numero % 5 == 0:
print("Número divisible por 5")
if numero == 5:
print("Viernes")
# Resultado:
# "Número mayor que 3"
# "Número divisible por 5"
# "Viernes"
Observamos que ha ejecutado el código de todos los if, puesto que son cada uno independiente.
Veamos mejor la diferencia de if if if con if elif elseen el siguiente ejemplo.
temperatura = 30
if temperatura > 25:
print("Hace calor")
if temperatura > 15:
print("Hace buen clima")
if temperatura > 5:
print("Hace un poco de frío")
# Resultado:
# Hace calor
# Hace buen clima
# Hace un poco de frío
temperatura = 30
if temperatura > 25:
print("Hace calor")
elif temperatura > 15:
print("Hace buen clima")
elif temperatura > 5:
print("Hace un poco de frío")
else:
print("Hace mucho frío")
# Resultado:
# Hace calor
En el primer ejemplo (varios if) evalua las condiciones de manera independiente, por lo que como cumple la condición de todos los if muestra todos los mensajes. Sin embargo en el segundo ejemplo usa if elif else, por lo que cuando se cumple una condición ignora el resto.
Operadores lógicos en condicionales
and
Como condición del if o del elif podemos crear una condición mútiple con más de un requisito.
Si anidamos las condiciones con un and es necesario que se cumplan TODAS para pode declarar el if como verdadero.
edad = 25
dia_semana = 'Sábado'
if edad >= 18 and dia_semana == 'Sábado': # condicion 1 : edad >= 18, condición 2 : dia_semana = 'Sábado'
print("Puedes entrar al concierto") # solo se ejecuta si se cumplen ambas condiciones
or
Si anidamos las condiciones con un or solo es necesario que se cumpla UNA de ellas para pode declarar el if como verdadero.
es_vip = False
tiene_entrada = True
if es_vip or tiene_entrada:
print("Puedes pasar") # puede pasar ya sea porque es vip o porque tiene entrada
Condicionales dentro de condicionales (anidados)
En python podemos anidar tantos condicionales como queramos. Por ejemplo:
edad = 20
tiene_dni = True
if edad >= 18:
if tiene_dni:
print("Puedes votar")
else:
print("Te falta el DNI")
else:
print("Eres menor de edad, no puedes votar")
En el ejemplo anterior, la condición tiene_dni solo se evalúa si se ha cumplido la anterior edad >= 18, sino no llega ni a evaluarse.
Se interpretaría como:
- Si no tiene más de 18 años directamente "Eres menor de edad, no puedes votar".
- Si tiene 18 años o más, contemplamos dos posibilidades:
- Tiene el dni, por tanto "Puedes votar"
- No tiene el dni, por tanto "Te falta el dni"
Ejericios
Crea una variable llamada dia que contenga un número del 1 al 7. Si el número es 1, imprime "Lunes", si es 2 imprime "Marte", etc. Si no es un número del 1 al 7 imprime "Dia inválido".
dia = 3
if dia == 1:
print("Lunes")
elif dia == 2:
print("Martes")
elif dia == 3:
print("Miércoles")
elif dia == 4:
print("Jueves")
elif dia == 5:
print("Viernes")
elif dia == 6:
print("Sábado")
elif dia == 7:
print("Domingo")
else:
print("Día inválido")
Declara una variable llamada contrsenya (string) y otra llamada administrador booleana. Comprueba si a contraseña tiene 8 dígitos o más, en ese caso, comprueba si eres administrador o no, si lo eres muestra el mensaje Hola admin, contrseña válida, sino es admin muestra Hola usuario externo, contraseña válida. En caso de que no tenga 8 dígitos o más directamente muestra Constraseña inválida.
Pista: para saber la longitud de un texto (cuántos caracteres tiene) se usa una función llamada len().
contrasenya = 'hola12345'
administrador = False
if len(contrasenya) >= 8:
if administrador == True: # o directamente if administrador:
print("Hola admin, contrseña válida")
else:
print("Hola usuario externo, contraseña válida")
else:
print("Constraseña inválida")