Representación editorial de código Python con estructuras condicionales y un diagrama de decisiones, con el logotipo de Python.

Python: estructuras condicionales con if, elif y else

Un programa no tiene por qué hacer siempre lo mismo.

Hasta ahora hemos trabajado con instrucciones que se ejecutan una detrás de otra: pedimos datos, hacemos operaciones y mostramos un resultado. Pero muchos programas necesitan tomar decisiones.

Por ejemplo:

  • mostrar un mensaje solo si se cumple una condición;
  • elegir entre dos caminos posibles;
  • clasificar un resultado entre varias alternativas;
  • comprobar varias condiciones antes de actuar.

En Python, esas decisiones se construyen principalmente con if, elif y else.


1. Una condición produce una respuesta lógica

Una estructura condicional parte de una expresión que Python puede evaluar como verdadera o falsa.

Por ejemplo:

edad = 20

edad >= 18

La expresión:

edad >= 18

produce un valor booleano:

True

Si edad valiera 15, el resultado sería:

False

La estructura condicional utiliza precisamente ese resultado para decidir si ejecuta o no un bloque de instrucciones.


2. La estructura if

La forma más sencilla es:

if condición:
    instrucciones

Por ejemplo:

sueldo = 3500

if sueldo > 3000:
    print("Esta persona debe abonar impuestos")

Python evalúa primero:

sueldo > 3000

Si el resultado es True, ejecuta el bloque sangrado que aparece debajo del if.

Si el resultado es False, ese bloque se omite y el programa continúa después.

Flujograma de una sentencia if en Python: si la condición es verdadera se ejecuta el bloque y si es falsa se salta.

La idea puede resumirse así:

Si se cumple la condición, ejecuta este bloque. Si no, continúa.


3. El sangrado no es decoración

En Python, el sangrado indica qué instrucciones pertenecen al bloque controlado por el if.

temperatura = 32

if temperatura > 30:
    print("Hace calor")
    print("Conviene hidratarse")

print("Fin del programa")

Las dos primeras llamadas a print() están dentro del if porque tienen sangrado.

La última no lo está:

print("Fin del programa")

Por tanto, se ejecutará siempre, se cumpla o no la condición.

Esto es importante: en Python no utilizamos llaves para delimitar estos bloques. La indentación forma parte de la sintaxis del programa.


4. Dos caminos: if ... else

A veces no queremos simplemente ejecutar algo cuando se cumple una condición. Queremos elegir entre dos posibilidades.

La estructura es:

if condición:
    instrucciones_si_se_cumple
else:
    instrucciones_si_no_se_cumple

Por ejemplo:

numero1 = int(input("Introduce el primer valor: "))
numero2 = int(input("Introduce el segundo valor: "))

if numero1 > numero2:
    print(numero1, "es mayor")
else:
    print(numero2, "es mayor o igual")

Solo se ejecuta uno de los dos bloques.

Flujograma de una estructura if else en Python con dos ramas mutuamente excluyentes que se vuelven a unir.

La estructura responde a una pregunta:

¿Se cumple la condición?

  • Sí → ejecuta el bloque del if.
  • No → ejecuta el bloque del else.

Después, ambos caminos vuelven a unirse y el programa continúa.


5. Varias alternativas: if ... elif ... else

Cuando existen más de dos posibilidades, podemos utilizar elif.

nota = 7

if nota >= 9:
    print("Sobresaliente")
elif nota >= 7:
    print("Notable")
elif nota >= 5:
    print("Aprobado")
else:
    print("Suspenso")

Python evalúa las condiciones de arriba abajo.

En cuanto encuentra una condición verdadera, ejecuta ese bloque y deja de comprobar los elif siguientes.

Con nota = 7:

nota >= 9

es False.

Después:

nota >= 7

es True.

Por tanto, se ejecuta:

print("Notable")

y las alternativas posteriores ya no se evalúan.

Flujograma de una cadena if elif else en Python que se evalúa de arriba abajo hasta la primera condición verdadera.

6. El orden de las condiciones importa

Observa este código:

nota = 9

if nota >= 5:
    print("Aprobado")
elif nota >= 7:
    print("Notable")
elif nota >= 9:
    print("Sobresaliente")

La primera condición ya es verdadera:

nota >= 5

Así que Python imprime:

Aprobado

y termina la cadena.

Las condiciones siguientes también serían verdaderas, pero ya no llegan a evaluarse.

Por eso, cuando varias condiciones pueden cumplirse a la vez, debemos ordenar correctamente las alternativas.

En este ejemplo, lo adecuado sería empezar por la condición más restrictiva:

if nota >= 9:
    print("Sobresaliente")
elif nota >= 7:
    print("Notable")
elif nota >= 5:
    print("Aprobado")
else:
    print("Suspenso")

No basta con escribir condiciones correctas. También hay que pensar en qué orden se comprobarán.

Compruébalo tú mismo

Antes de ver el resultado, intenta predecir qué imprimirá Python. El recurso muestra después el recorrido real y por qué una condición demasiado general puede impedir que se alcancen las siguientes.


7. else es la alternativa restante

else no lleva condición.

Representa todos los casos que no han coincidido con las condiciones anteriores.

edad = 15

if edad >= 18:
    print("Mayor de edad")
else:
    print("Menor de edad")

También puede aparecer al final de una cadena de elif:

dia = "lunes"

if dia == "sábado":
    print("Es fin de semana")
elif dia == "domingo":
    print("Es fin de semana")
else:
    print("Es un día laborable")

Si no necesitamos hacer nada en el caso restante, podemos omitir else.


8. Combinar condiciones con and, or y not

Una decisión puede depender de más de una condición.

and: deben cumplirse todas

edad = 20
ingresos = 1200

if edad > 16 and ingresos >= 1000:
    print("Debe tributar")
else:
    print("No debe tributar")

Para entrar en el primer bloque, las dos condiciones deben resultar verdaderas.

or: basta con que se cumpla una

dia = "domingo"

if dia == "sábado" or dia == "domingo":
    print("Es fin de semana")
else:
    print("Es un día laborable")

not: invierte una condición

tiene_permiso = False

if not tiene_permiso:
    print("Acceso denegado")

not False se convierte en True.

Infografía de operadores lógicos and, or y not en Python con ejemplos coherentes de valores True y False.

9. Condicionales anidados

Una estructura condicional puede contener otra estructura condicional.

Por ejemplo:

edad = 20
tiene_dni = True

if edad >= 18:
    if tiene_dni:
        print("Puedes votar")
    else:
        print("Necesitas un DNI para votar")
else:
    print("Eres menor de edad")

El segundo if solo llega a evaluarse si antes se ha cumplido:

edad >= 18

Eso permite tomar decisiones dentro de otras decisiones.

Flujograma de condicionales anidados en Python donde la segunda decisión solo se evalúa dentro de la rama verdadera de la primera.

10. ¿elif o un if anidado?

No son exactamente lo mismo.

Utilizamos elif cuando estamos eligiendo una alternativa entre varias posibilidades del mismo nivel:

if nota >= 9:
    print("Sobresaliente")
elif nota >= 7:
    print("Notable")
elif nota >= 5:
    print("Aprobado")
else:
    print("Suspenso")

Utilizamos un if anidado cuando una segunda decisión solo tiene sentido después de que se haya cumplido una primera condición:

if edad >= 18:
    if tiene_dni:
        print("Puedes votar")

En el primer caso clasificamos.

En el segundo, comprobamos un requisito y, dentro de él, comprobamos otro.


11. Un caso algo más completo

Supongamos que queremos decidir si una persona debe tributar según dos datos:

  • debe ser mayor de 16 años;
  • debe tener unos ingresos mensuales iguales o superiores a 1000 €.

Podemos escribir:

edad = int(input("Edad: "))
ingresos = float(input("Ingresos mensuales: "))

if edad > 16 and ingresos >= 1000:
    print("Debe tributar")
else:
    print("No debe tributar")

Aquí aparecen juntos varios elementos que ya conocemos:

  • input() recoge los datos;
  • int() y float() los convierten;
  • los operadores relacionales construyen condiciones;
  • and combina esas condiciones;
  • if / else decide qué bloque ejecutar.

El programa deja de ser una simple secuencia lineal: su recorrido depende de los datos introducidos.


12. Errores frecuentes

Olvidar los dos puntos

Incorrecto:

if edad >= 18
    print("Mayor de edad")

Correcto:

if edad >= 18:
    print("Mayor de edad")

Sangrar mal el bloque

if edad >= 18:
print("Mayor de edad")

Python necesita que las instrucciones pertenecientes al bloque estén indentadas.

Confundir = con ==

if dia = "sábado":

= sirve para asignar un valor.

Para comparar usamos:

if dia == "sábado":

Ordenar mal los elif

Si una condición demasiado general aparece antes que otra más específica, puede impedir que la segunda llegue a evaluarse.

Escribir varias condiciones independientes cuando solo debe ejecutarse una opción

No es lo mismo:

if nota >= 5:
    print("Aprobado")

if nota >= 7:
    print("Notable")

que:

if nota >= 7:
    print("Notable")
elif nota >= 5:
    print("Aprobado")

En el primer caso pueden ejecutarse ambos if.

En el segundo, solo se ejecutará una de las ramas.


13. Ideas esenciales

  • if ejecuta un bloque solo cuando una condición resulta verdadera.
  • else representa la alternativa cuando las condiciones anteriores no se cumplen.
  • elif permite comprobar varias alternativas en orden.
  • En una cadena if / elif / else, se ejecuta como máximo una rama.
  • El orden de las condiciones puede cambiar el resultado.
  • and, or y not permiten construir condiciones más complejas.
  • El sangrado indica qué instrucciones pertenecen a cada bloque.
  • Un condicional puede contener otro condicional.
  • elif y la anidación resuelven problemas distintos.
  • Leer un condicional correctamente consiste en seguir el mismo orden en que Python evalúa las condiciones.

14. Una idea para quedarse

Una estructura condicional no pregunta simplemente:

«¿Es esto verdadero o falso?»

La pregunta realmente útil es:

«Si esto es verdadero, ¿qué camino debe seguir ahora el programa?»

Aprender a programar condicionales consiste en aprender a diseñar esos caminos con claridad.


PRÁCTICA · EJERCICIOS INTERACTIVOS

Ponlo en práctica

Continúa con Python: ejercicios interactivos de estructuras condicionales: ocho problemas de dificultad creciente para escribir, ejecutar y corregir tus propias decisiones en Python, con una solución orientativa disponible cuando la necesites.

Abrir los ejercicios ↗

Publicaciones Similares

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *