Menu

if, elif, else en Python: sentencias condicionales y expresiones ternarias

Cómo funcionan las sentencias if, elif y else de Python — incluidos valores truthy, condiciones anidadas y la expresión if ternaria.

Una decisión, con forma de inglés

if es la primera herramienta a la que recurre la mayoría de programas. Deja a tu código tomar un camino cuando una condición es verdadera y un camino distinto cuando no lo es. Python lo deletrea directamente:

main.py
Output
Click Run to see the output here.

Dos líneas, una decisión. La línea del if termina en dos puntos. La línea indentada debajo es el cuerpo del if — el código que se ejecuta si la condición es verdadera. Si hour fuera 15, el cuerpo se saltaría por completo y no se imprimiría nada.

La indentación es la estructura aquí. Python sabe qué líneas pertenecen al if mirando su espacio en blanco inicial. Cuatro espacios por nivel es la convención; sé consistente.

Añadir una rama else

A menudo quieres que pase algo en cualquier caso: esto cuando la condición es verdadera, aquello cuando no. Así es como usas else:

main.py
Output
Click Run to see the output here.

La línea else no tiene condición — captura todo lo que el if no cogió.

Múltiples ramas con elif

Para más de dos caminos, apila cláusulas elif ("else if") entre if y else:

main.py
Output
Click Run to see the output here.

Python recorre las condiciones de arriba abajo y ejecuta el bloque de la primera que sea verdadera. El resto se saltan. Este orden de arriba abajo importa: si pones score >= 60 antes que score >= 90, todo el mundo saca una D — la primera condición verdadera gana.

Una estructura ordenada para tener en mente: las condiciones deberían ser mutuamente excluyentes para cualquier entrada dada, y el orden debería reflejar cómo piensas naturalmente en el problema. Pon los casos más específicos primero, los más generales al final.

Valores truthy en condiciones

La expresión en if no tiene que evaluar a un True o False literal. Python acepta cualquier valor y decide su truthiness:

main.py
Output
Click Run to see the output here.

if items: se lee como "si la lista tiene algo dentro". Los valores falsy incluyen:

  • False
  • 0, 0.0
  • None
  • Contenedores vacíos: "", [], {}, set(), ()

Todo lo demás es truthy. Usar la truthiness hace que el código se lea más naturalmente, con un matiz: si el cero es un valor con significado (un contador que está legítimamente en cero), compara explícitamente con is not None o != 0 para evitar la confusión "vacío = cero".

Combinar condiciones

and, or y not te dejan construir condiciones compuestas:

main.py
Output
Click Run to see the output here.

Las comparaciones encadenadas son más limpias que un and explícito cuando los extremos comparten un valor intermedio:

main.py
Output
Click Run to see the output here.

Eso es lo mismo que 18 <= age and age < 65, pero se lee como una desigualdad matemática.

Sentencias if anidadas

Puedes poner un if dentro de otro if. Es legal, y a veces la estructura más clara — pero también es la forma principal en que el código condicional se vuelve difícil de seguir. Si te encuentras tres niveles de profundidad, considera aplanar con retornos tempranos (cuando estés escribiendo funciones) o combinando condiciones:

main.py
Output
Click Run to see the output here.
main.py
Output
Click Run to see the output here.

Ambas funcionan. Elige la versión que se lea mejor para un lector que no ha visto este código antes.

La expresión ternaria

Cuando solo quieres que un valor sea una de dos cosas dependiendo de una condición, Python tiene una forma compacta:

main.py
Output
Click Run to see the output here.

Léelo de izquierda a derecha: "warm si temp es al menos 70, si no cool". Es genial para asignaciones cortas del tipo uno-u-otro. Deja de usarlo cuando las ramas se alarguen o contengan varias operaciones — en ese punto, un bloque if/else completo es más fácil para la vista.

if es expresión solo en un sitio

A diferencia de algunos lenguajes, la sentencia if de Python en sí no produce un valor. Solo la forma ternaria lo hace. No puedes escribir x = if ...: como en Rust o Kotlin. Si quieres un valor condicional, usa el ternario; si quieres comportamiento condicional, usa un bloque if completo.

Un pequeño ejemplo completo

Un programa rápido que clasifica una temperatura:

main.py
Output
Click Run to see the output here.

Fíjate en que la lógica es en su mayor parte decidir cuál debe ser advice. Puedes ver de un vistazo qué rango de temperatura se mapea a qué mensaje. Esa es la forma a la que apuntas cuando escribes condiciones — cada rama debe ser pequeña y la intención global obvia.

Qué viene después

Las condiciones dejan a tu código elegir un camino. Los bucles le dejan repetir. Siguiente: bucles for, el bucle más común en Python con diferencia, y la pareja natural de las colecciones que conocerás unas páginas más adelante.

Preguntas frecuentes

¿Cómo funciona una sentencia if en Python?

if condition: seguido de un bloque indentado ejecuta el bloque solo cuando la condición es verdadera. Las cláusulas opcionales elif (else if) te permiten comprobar condiciones adicionales, y un else opcional se ejecuta cuando nada más coincidió.

¿Python tiene sentencia switch?

Python 3.10 añadió match/case para coincidencia estructural de patrones, que cubre la mayoría de casos de uso del switch y más. Para ramificación simple, una cadena de if/elif sigue siendo común y perfectamente válida.

¿Qué es un if ternario en Python?

Una expresión condicional de una línea: result = a if condition else b. Se lee de izquierda a derecha — evalúa a cuando condition es verdadera, si no evalúa b. Útil para asignaciones cortas del tipo uno-u-otro; menos legible cuando las ramas se alargan.

Aprende a programar con Coddy

COMENZAR