W3docs

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 True

Ejemplo

python— editable, runs on the server

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 PythonTrue o False.

OperadorSignificadoEjemploResultado
==Igual a5 == 5True
!=Distinto de5 != 3True
>Mayor que5 > 3True
<Menor que5 < 3False
>=Mayor o igual que5 >= 5True
<=Menor o igual que4 <= 5True

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.

OperadorDevuelve True cuando…Ejemplo
andAmbas condiciones son Truex > 0 and x < 10
orAl menos una condición es Truex < 0 or x > 100
notLa condición es Falsenot logged_in

Ejemplo — and

python— editable, runs on the server

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 False

Ejemplo

python— editable, runs on the server

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 True

Puedes tener tantas cláusulas elif como necesites, pero solo un if y como máximo un else.

Ejemplo — clasificación de notas

python— editable, runs on the server

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: B

Precaució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:

  • None
  • False
  • 0 (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 checks

Usa 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_false

Ejemplo

age = 20
status = "adult" if age >= 18 else "minor"
print(status)
# Output: adult

Esto 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 3

Sin :=, 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

EscenarioMejor opción
Una condición, una acciónif
Dos caminos mutuamente excluyentesif-else
Tres o más caminosif-elif-else
Prueba secundaria dentro de una ramaif anidado
Asignación de valor simpleTernario x if c else y
Comprobaciones de igualdad con múltiples valores (Python 3.10+)sentencia match

Práctica

Práctica
What are the correct ways to write an if-else statement in Python?
What are the correct ways to write an if-else statement in Python?

Una vez que comprendas los condicionales, el siguiente paso natural es repetir código con bucles while de Python y bucles for de Python.

Was this page helpful?