Python If...Else
Aprende cómo funcionan if, elif y else en Python: sintaxis, operadores de comparación, operadores lógicos, condiciones anidadas y el operador ternario.
Las sentencias condicionales permiten que un programa Python elija entre diferentes caminos de ejecución dependiendo de si una condición es verdadera o falsa. Este capítulo cubre todas las formas de condicionales en Python: if, if-else, if-elif-else, if anidado y la forma abreviada de una sola línea, junto con los operadores de comparación y lógicos que hacen que las condiciones funcionen.
La sentencia if
La sentencia if es el condicional más simple. El bloque indentado se ejecuta solo cuando la condición evalúa a True.
if condition:
# code that runs when condition is TrueEjemplo
Python usa indentación (4 espacios por convención) para definir el bloque — no hay llaves. Si la condición es False, el bloque simplemente se omite.
Operadores de comparación
Las condiciones se construyen a partir de expresiones que comparan dos valores. Cada expresión produce un boolean de Python — True o False.
| Operador | Significado | Ejemplo | Resultado |
|---|---|---|---|
== | Igual a | 5 == 5 | True |
!= | Distinto de | 5 != 3 | True |
> | Mayor que | 5 > 3 | True |
< | Menor que | 5 < 3 | False |
>= | Mayor o igual que | 5 >= 5 | True |
<= | Menor o igual que | 4 <= 5 | True |
Consulta Operadores de Python para la referencia completa de operadores, incluidos los aritméticos y de asignación.
Operadores lógicos
Los operadores lógicos combinan múltiples condiciones en una sola expresión.
| Operador | Devuelve True cuando… | Ejemplo |
|---|---|---|
and | Ambas condiciones son True | x > 0 and x < 10 |
or | Al menos una condición es True | x < 0 or x > 100 |
not | La condición es False | not logged_in |
Ejemplo — and
Ejemplo — or y not
day = "Saturday"
if day == "Saturday" or day == "Sunday":
print("It is the weekend")
logged_in = False
if not logged_in:
print("Please log in")La sentencia if-else
Añade una cláusula else para manejar el caso en que la condición es False.
if condition:
# runs when condition is True
else:
# runs when condition is FalseEjemplo
Solo uno de los dos bloques se ejecutará en cada ejecución.
La sentencia if-elif-else
Usa elif (abreviatura de "else if") para evaluar varias condiciones en secuencia. Python las comprueba de arriba a abajo y ejecuta el primer bloque que coincida. El bloque else al final actúa como caso por defecto cuando ninguna condición coincide.
if condition1:
# runs when condition1 is True
elif condition2:
# runs when condition2 is True and condition1 is False
elif condition3:
# runs when condition3 is True and the above are False
else:
# runs when none of the above are TruePuedes tener tantas cláusulas elif como necesites, pero solo un if y como máximo un else.
Ejemplo — clasificación de notas
Por qué importa el orden: una vez que Python encuentra una condición True, deja de comprobar. Si escribieras score >= 60 primero, una puntuación de 95 imprimiría "Grade: C" porque 95 también es >= 60. Siempre pon la condición más específica (más estricta) primero.
Sentencias if anidadas
Una sentencia if puede aparecer dentro del bloque de otra sentencia if. Esto se llama anidamiento y es útil cuando necesitas aplicar una prueba secundaria solo después de que pase una primaria.
score = 85
if score >= 60:
if score >= 90:
print("Grade: A")
elif score >= 80:
print("Grade: B")
else:
print("Grade: C")
else:
print("Grade: F")
# Output: Grade: BPrecaución: el anidamiento profundo hace que el código sea difícil de leer. Prefiere cadenas elif para comparaciones planas, y considera extraer la lógica anidada en una función cuando el anidamiento supere dos niveles.
Veracidad y valores falsy
Python trata muchos valores como implícitamente True o False sin usar un operador de comparación. Los valores que se consideran False en un contexto boolean son:
NoneFalse0(entero cero),0.0(cero flotante)""(string vacío),[](lista vacía),{}(dict vacío),()(tupla vacía),set()(conjunto vacío)
Todo lo demás se considera True. Esto permite escribir guardas concisas:
name = "Alice"
if name:
print("Name is set") # prints because "Alice" is truthy
items = []
if not items:
print("The list is empty") # prints because [] is falsy
value = None
if value is None:
print("No value provided") # use 'is None' for explicit None checksUsa is None / is not None (no == None) cuando compruebes None específicamente — es la convención de estilo de Python y evita coincidencias accidentales.
if abreviado (expresión ternaria)
La expresión condicional de una línea en Python asigna uno de dos valores según una condición:
value = result_if_true if condition else result_if_falseEjemplo
age = 20
status = "adult" if age >= 18 else "minor"
print(status)
# Output: adultEsto es equivalente a:
if age >= 18:
status = "adult"
else:
status = "minor"Usa la forma ternaria para asignaciones de valores simples. Evita anidarla — a if c1 else b if c2 else c se vuelve ilegible rápidamente.
La sentencia pass
Python requiere al menos una sentencia dentro de cada bloque. Si quieres definir una rama if que intencionalmente no hace nada (un marcador de posición durante el desarrollo), usa pass:
x = 10
if x > 5:
pass # TODO: handle this case later
else:
print("x is 5 or less")pass es una operación nula — le dice a Python "este bloque está intencionalmente vacío".
El operador walrus := (Python 3.8+)
El operador walrus asigna un valor a una variable y lo evalúa en la misma expresión. Es más útil cuando necesitas el valor evaluado dentro del bloque if:
numbers = [1, 2, 3, 4, 5]
if (n := len(numbers)) > 3:
print(f"List has {n} items, which is more than 3")
# Output: List has 5 items, which is more than 3Sin :=, necesitarías una línea de asignación separada. Los paréntesis alrededor de n := len(numbers) son necesarios aquí para evitar ambigüedades.
Errores comunes
Usar = en lugar de ==
# Wrong — this is assignment, not comparison, and causes a SyntaxError in conditions
# if x = 5:
# Correct
if x == 5:
print("x is five")Olvidar los dos puntos
Cada línea if, elif y else debe terminar con :. Un signo de dos puntos faltante produce un SyntaxError.
Indentación inconsistente
Todas las sentencias en el mismo bloque deben usar exactamente la misma indentación. Mezclar tabuladores y espacios provoca un IndentationError. Usa 4 espacios, que es el estándar de PEP 8.
Cuándo usar cada opción
| Escenario | Mejor opción |
|---|---|
| Una condición, una acción | if |
| Dos caminos mutuamente excluyentes | if-else |
| Tres o más caminos | if-elif-else |
| Prueba secundaria dentro de una rama | if anidado |
| Asignación de valor simple | Ternario x if c else y |
| Comprobaciones de igualdad con múltiples valores (Python 3.10+) | sentencia match |
Práctica
Una vez que comprendas los condicionales, el siguiente paso natural es repetir código con bucles while de Python y bucles for de Python.