HOWTO · Python

Python Múltiples sentencias if en una línea

Este tutorial explica qué instrucciones simples pueden escribirse en una línea en Python, cómo usar una expresión condicional para elegir un valor y por qué conviene utilizar un bloque `if`/`elif`/`else` en varias líneas para varias ramas.

En esta página

Python permite escribir varias instrucciones simples en una misma línea física si se separan con punto y coma, pero una instrucción if es compuesta y no puede encadenarse después de un punto y coma como otra instrucción. Para varias ramas, usa un bloque normal de if/elif/else. Una expresión condicional permite elegir un valor en una línea, mientras que any() responde a otra pregunta: si al menos un elemento de un iterable es verdadero.

Una línea compacta puede ser útil para una expresión breve, pero comprimir la lógica de las ramas en expresiones anidadas suele dificultar seguir el orden y el resultado. Los ejemplos siguientes distinguen estas formas para que puedas elegir la que se ajuste a tu tarea.

Escribir varias instrucciones if en una sola línea en Python

El punto y coma separa instrucciones simples, como first = 1; second = 2. No convierte una instrucción compuesta if en una instrucción simple: escribir if ready: start(); if finished: stop() en una misma línea física no es sintaxis válida de Python. El cuerpo de una sola instrucción if puede contener instrucciones simples separadas por punto y coma, como en if ready: start(); log_status(), pero rara vez resulta más claro que colocar cada acción en su propia línea con sangría.

Si necesitas comprobar condiciones alternativas y realizar acciones distintas, escribe un bloque de if/elif/else. Python comprueba las condiciones en orden y ejecuta únicamente el cuerpo correspondiente a la primera condición verdadera. Además, es más fácil ampliar el bloque cuando cambian las reglas o las acciones.

Usar una expresión condicional para elegir un valor

Una expresión condicional tiene la forma value_if_true if condition else value_if_false. Es una expresión, por lo que produce un valor que se puede asignar, devolver o pasar a una función. No crea varias instrucciones if ni ejecuta cuerpos de ramas independientes.

Por ejemplo, label = "adult" if age >= 18 else "minor" elige una de dos cadenas. También es posible elegir entre tres resultados mediante una expresión condicional anidada: label = "low" if score < 50 else "pass" if score < 80 else "high". Lee la expresión de izquierda a derecha: si la primera condición es falsa, Python evalúa la siguiente expresión condicional. Usa esta forma solo cuando las opciones sigan siendo fáciles de recorrer visualmente; un bloque de ramas en varias líneas suele ser más claro cuando hay varias condiciones anidadas.

Usar any() para comprobar si una condición es verdadera

La función integrada any() devuelve True cuando al menos un elemento de su iterable es verdadero, y devuelve False cuando ninguno lo es. Por ejemplo, any(score >= limit for limit in (50, 80)) comprueba si una puntuación alcanza al menos uno de esos límites. La expresión generadora proporciona resultados booleanos uno a uno, y any() se detiene en cuanto encuentra uno verdadero.

Usa any() cuando necesites una única respuesta de sí o no. No indica qué condición coincidió ni elige un mensaje correspondiente. Si cada condición requiere su propio resultado o acción, usa if/elif/else. No hace falta combinar una comprensión de listas con any() cuando una expresión generadora puede proporcionar directamente las comprobaciones booleanas.

Es preferible un bloque if/elif/else en varias líneas para varias ramas

Para la comparación a = 2 y b = 3, este bloque imprime la relación correspondiente. El código y la etiqueta visible del resultado se mantienen en inglés.

a = 2
b = 3

if a < b:
    print("a is less than b")
elif a == b:
    print("a is equal to b")
else:
    print("a is greater than b")
a is less than b

Las condiciones if y elif se comprueban en orden. Como los valores cumplen a < b, se ejecuta el primer cuerpo, que imprime su mensaje; las demás ramas se omiten. El else final cubre cualquier otra relación, incluida a > b.

Usa una expresión condicional cuando necesites elegir un valor sencillo, y any() cuando solo necesites saber si un iterable contiene algún valor verdadero. Para varias acciones o varios resultados posibles, el bloque en varias líneas deja claro el orden y el comportamiento de las ramas. Aunque el punto y coma puede separar instrucciones simples, no convierte una cadena de instrucciones compuestas if en una buena alternativa de una sola línea.