Condicionales: if, elif y else
Hasta ahora el código se ejecuta línea a línea, de arriba abajo, sin tomar decisiones. Los condicionales permiten que el programa ejecute unas instrucciones u otras dependiendo de si una condición es verdadera o falsa.
El if básico
La estructura más simple: si la condición es True, ejecuta el bloque. Si es False, lo salta.
>>> edad = 20
>>> if edad >= 18:
... print("eres mayor de edad")
eres mayor de edad
Dos cosas importantes de la sintaxis:
- La línea del
iftermina con dos puntos:. - El bloque que se ejecuta va indentado con 4 espacios. Python usa la indentación para delimitar bloques, no llaves como PHP o JavaScript. Si la indentación es incorrecta, el programa falla.
>>> if edad >= 18:
... print("error") # falta indentación: IndentationError
if / else
El bloque else se ejecuta cuando la condición del if es False:
>>> edad = 15
>>> if edad >= 18:
... print("puedes entrar")
... else:
... print("acceso denegado")
acceso denegado
Solo se ejecuta uno de los dos bloques, nunca los dos.
if / elif / else
Cuando hay más de dos posibilidades se usan uno o varios elif (contracción de else if). Python los evalúa en orden y ejecuta el primer bloque cuya condición sea verdadera:
>>> nota = 7
>>> if nota >= 9:
... print("sobresaliente")
... elif nota >= 7:
... print("notable")
... elif nota >= 5:
... print("aprobado")
... else:
... print("suspenso")
notable
El else al final es opcional, pero si está presente actúa como red de seguridad: se ejecuta si ninguna condición anterior fue verdadera.
Condiciones compuestas
Puedes usar todo lo que vimos en la lección anterior: and, or, not, in, encadenamiento...
>>> usuario = "cristina"
>>> clave_correcta = True
>>> if usuario == "cristina" and clave_correcta:
... print("bienvenida,", usuario)
bienvenida, cristina
>>> idiomas = ["python", "php", "javascript"]
>>> if "python" in idiomas:
... print("python encontrado")
python encontrado
>>> edad = 25
>>> if 18 <= edad <= 65:
... print("edad laboral")
edad laboral
Condicionales anidados
Puedes poner un if dentro de otro. Cada nivel añade 4 espacios de indentación:
>>> tiene_cuenta = True
>>> saldo = 150
>>> if tiene_cuenta:
... if saldo >= 100:
... print("puedes realizar la transferencia")
... else:
... print("saldo insuficiente")
... else:
... print("necesitas una cuenta primero")
puedes realizar la transferencia
Nota: Los anidamientos profundos dificultan la lectura. Si te encuentras con tres o cuatro niveles, suele ser señal de que la lógica se puede simplificar con and/or o reorganizando las condiciones.
if en una línea (operador ternario)
Python permite escribir un if/else simple en una sola línea. La sintaxis es valor_si_true if condición else valor_si_false:
>>> edad = 20
>>> estado = "mayor de edad" if edad >= 18 else "menor de edad"
>>> print(estado)
mayor de edad
Es útil para asignaciones cortas, pero no abuses: en cuanto la condición o los valores se complican, el if en varias líneas es más claro.
En la próxima lección: bucles: for, while, break y continue para repetir bloques de código.