Saltar al contenido
Editor

If-else en Python: condiciones, elif, if anidados y ternario

Principiante25 min6 ejercicios70 XP

Esta lección es una traducción del original en inglés.Read in EnglishAvisar de un error de traducción

0/6 ejercicios

Cada día tomas cientos de decisiones. Si llueve, sales con paraguas. Si el semáforo está en rojo, te detienes. Si a tu teléfono le queda menos del 20% de batería, buscas un cargador. Todas son decisiones condicionales: compruebas algo y actúas según el resultado.

Los programas toman decisiones de la misma manera. Sin condiciones, el código se ejecutaría exactamente igual todas las veces, sin importar qué datos reciba. Las condiciones permiten que tus programas respondan a distintas situaciones, manejen los casos límite y se comporten de forma inteligente.

En este tutorial aprenderás cómo toma decisiones Python con if, else y elif. Al terminar, escribirás programas que eligen caminos distintos según lo que escribe el usuario, los valores calculados y combinaciones complejas de condiciones.

¿Cómo funciona la instrucción if en Python?

La instrucción if es la forma más sencilla de tomar decisiones. Comprueba una condición. Si la condición es True, se ejecuta el código indentado que tiene debajo. Si la condición es False, Python se salta ese código por completo.

Una instrucción if básica
temperature = 35
if temperature > 30:
print('It\'s hot outside!')
print('Stay hydrated.')
print('Have a great day!')
Salida
It's hot outside!
Stay hydrated.
Have a great day!

Fíjate en la estructura. Después de la palabra clave if viene una condición (temperature > 30) y luego dos puntos (:). Las líneas de debajo están indentadas: así sabe Python qué código pertenece al bloque if. La última línea se ejecuta pase lo que pase, porque no está indentada bajo el if.

Prueba a cambiar la temperatura a 25 en el código de arriba y vuelve a ejecutarlo. Las dos líneas sobre el calor desaparecerán, pero seguirás viendo "Have a great day!" porque está fuera del bloque if.


Agregar else: ¿qué pasa cuando la condición es falsa?

Una instrucción if por sí sola solo puede hacer algo o no hacer nada. Pero muchas veces quieres hacer una cosa cuando la condición es verdadera y otra distinta cuando es falsa. Para eso sirve else.

if-else: dos caminos posibles
age = 15
if age >= 18:
print('You can vote!')
else:
print('You\'re too young to vote.')
years_left = 18 - age
print(f'Come back in {years_left} years.')
Salida
You're too young to vote.
Come back in 3 years.

Piensa en if-else como una bifurcación en el camino. Python siempre va por un lado o por el otro: nunca por los dos, y nunca por ninguno. Cada vez se ejecuta exactamente un bloque.

Sin else: dos comprobaciones separadas
score = 85

if score >= 60:
    print('You passed!')
if score < 60:
    print('You failed.')
Con else: más limpio y más seguro
score = 85

if score >= 60:
    print('You passed!')
else:
    print('You failed.')

La versión con else es mejor por dos razones. Primero, es más corta y fácil de leer. Segundo, es imposible que por accidente se ejecuten los dos bloques o ninguno. Con dos instrucciones if separadas, una errata en la segunda condición podría causar errores.


¿Cómo funciona elif con varias condiciones?

¿Y si tienes más de dos opciones? Imagina que calificas un examen: A, B, C, D o F. No puedes manejar cinco resultados solo con if y else. Ahí es donde entra elif (abreviatura de "else if", es decir, "si no, si").

Varios elif encadenados para múltiples condiciones
score = 82
if score >= 90:
grade = 'A'
elif score >= 80:
grade = 'B'
elif score >= 70:
grade = 'C'
elif score >= 60:
grade = 'D'
else:
grade = 'F'
print(f'Score: {score}, Grade: {grade}')
Salida
Score: 82, Grade: B

Python comprueba las condiciones de arriba abajo. En cuanto encuentra una que es True, ejecuta ese bloque y se salta todo lo que hay debajo. Si no se cumple ninguna condición, se ejecuta el bloque else como red de seguridad.

Puedes tener tantos bloques elif como quieras. El else del final es opcional, pero es buena práctica incluirlo para atrapar los valores inesperados.


Instrucciones if anidadas: condiciones dentro de condiciones

A veces necesitas comprobar una segunda condición solo si la primera se cumple. Por ejemplo, una atracción de un parque temático podría comprobar primero tu estatura y luego tu edad. Puedes poner una instrucción if dentro de otra instrucción if: esto se llama anidar.

Instrucciones if anidadas
has_ticket = True
age = 14
if has_ticket:
if age >= 12:
print('Welcome to the ride!')
else:
print('Sorry, you must be 12 or older.')
else:
print('You need a ticket first.')
Salida
Welcome to the ride!

El if interior solo se ejecuta cuando el if exterior es True. Fíjate en cómo la indentación se hace más profunda: cada nivel de anidamiento agrega otra capa de indentación.

Muy anidado: más difícil de leer
if has_ticket:
    if age >= 12:
        if height >= 120:
            print('Welcome!')
Condiciones combinadas: más limpio
if has_ticket and age >= 12 and height >= 120:
    print('Welcome!')

Operador ternario en Python: if-else en una línea

A veces tienes un if-else sencillo que solo asigna un valor. Python tiene un atajo para esto llamado operador ternario (también conocido como expresión condicional). Pone todo el if-else en una sola línea.

Operador ternario: if-else en una línea
age = 20
# Regular if-else
if age >= 18:
status = 'adult'
else:
status = 'minor'
print(status)
# Same thing with ternary operator
status = 'adult' if age >= 18 else 'minor'
print(status)
Salida
adult
adult

La sintaxis es: value_if_true if condition else value_if_false. Se lee casi como una frase: "status vale 'adult' si age es al menos 18; si no, vale 'minor'".

El ternario en la práctica
# Ternary works great in print statements and f-strings
temperature = 28
print(f'Wear a {"coat" if temperature < 15 else "t-shirt"} today.')
# And for quick calculations
x = -5
absolute = x if x >= 0 else -x
print(f'Absolute value of {x} is {absolute}')
Salida
Wear a t-shirt today.
Absolute value of -5 is 5

Errores comunes con if-else

Estos son los errores más frecuentes que cometen los principiantes con las instrucciones condicionales. Aprende a reconocer estos patrones y te ahorrarás horas de depuración.

Error común: or con varios valores
# Bug: wrong comparison for multiple values
color = 'red'
# This does NOT work as expected
if color == 'red' or 'blue':
print('This always runs!') # Always True!
# This is correct
if color == 'red' or color == 'blue':
print('Red or blue!')
# Even cleaner with "in"
if color in ('red', 'blue', 'green'):
print('Primary color!')
Salida
This always runs!
Red or blue!
Primary color!

Ejercicios de práctica

¡Hora de practicar! Estos ejercicios van desde instrucciones if sencillas hasta una lógica condicional más compleja. Intenta resolver cada uno antes de mirar las pistas.

Ejercicio 1: par o impar
Escribe el código

Escribe un programa que compruebe si un número es par o impar. Tienes una variable number con el valor 7.

Imprime "even" si el número es par, o "odd" si es impar.

Salida esperada:

odd

Pista: un número es par si number % 2 == 0 (el resto de dividirlo entre 2 es cero).

number = 7
# Check if the number is even or odd
Ejercicio 2: consejos según la temperatura
Escribe el código

Escribe un programa que dé consejos de ropa según la temperatura. Tienes una variable temp con el valor 22.

Reglas:

  • Si temp es 30 o más, imprime "Wear shorts"
  • Si temp es 20 o más (pero menos de 30), imprime "Wear a t-shirt"
  • Si temp es 10 o más (pero menos de 20), imprime "Wear a jacket"
  • Si es menos de 10, imprime "Wear a coat"
  • Salida esperada:

    Wear a t-shirt
    temp = 22
    # Give clothing advice based on temperature
    Ejercicio 3: predice la salida
    Predice la salida

    Sin ejecutar el código, predice qué imprimirá. Luego ejecútalo para comprobarlo.

    Piensa bien qué condiciones son True y cuáles son False.

    x = 15
    if x > 20:
    print('A')
    elif x > 10:
    print('B')
    elif x > 5:
    print('C')
    else:
    print('D')
    print('Done')
    Ejercicio 4: corrige la calculadora de notas
    Corrige el error

    Esta calculadora de notas tiene un error. Todas las puntuaciones reciben la nota "D", aunque deberían ser "A", "B" o "C". Corrige la serie de elif para que funcione bien.

    Salida esperada con score = 85:

    Grade: B
    score = 85
    if score >= 60:
    grade = 'D'
    elif score >= 70:
    grade = 'C'
    elif score >= 80:
    grade = 'B'
    elif score >= 90:
    grade = 'A'
    else:
    grade = 'F'
    print(f'Grade: {grade}')
    Ejercicio 5: precio de la entrada con el ternario
    Escribe el código

    Un cine cobra $12 a los adultos (18 años o más) y $8 a los niños (menores de 18). Usa el operador ternario para fijar el precio en una línea y luego imprímelo.

    Tienes una variable age con el valor 14.

    Salida esperada:

    Ticket price: $8
    age = 14
    # Use a ternary operator to set the price
    price = # your code here
    print(f'Ticket price: ${price}')
    Ejercicio 6: validador de inicio de sesión
    Escribe el código

    Escribe un validador de inicio de sesión. Tienes dos variables: username y password.

    Reglas:

  • Si username es "admin" y password es "secret123", imprime "Welcome, admin!"
  • Si username es "admin" pero la contraseña es incorrecta, imprime "Wrong password"
  • Con cualquier otro nombre de usuario, imprime "User not found"
  • Salida esperada con username = "admin", password = "wrong":

    Wrong password
    username = 'admin'
    password = 'wrong'
    # Write the login validation logic

    Resumen: instrucciones if-else en Python

    Esto es todo lo que aprendiste sobre las instrucciones condicionales en Python:

    ConceptoSintaxisPara qué sirve
    ifif condition:Ejecuta código cuando la condición es True
    elseelse:Ejecuta código cuando el if es False
    elifelif condition:Comprueba condiciones adicionales
    If anidadoif dentro de ifDecisiones en varios niveles
    Ternariox if cond else yIf-else en una línea para valores sencillos

    Reglas clave que debes recordar:

  • Toda línea if, elif y else termina con dos puntos (:)
  • El código dentro del bloque debe estar indentado
  • En una serie de elif, Python se detiene en la primera condición True
  • Usa == para comparar, no = (que sirve para asignar)
  • En una serie de elif, pon primero la condición más restrictiva
  • ¿Qué sigue?

    Ahora que sabes tomar decisiones, es hora de hacer que tus programas repitan cosas. En el próximo tutorial, [Bucles for en Python](/python/python-for-loops), aprenderás a recorrer listas, rangos y cadenas para procesar datos sin escribir el mismo código una y otra vez.

    Tutoriales relacionados

    ¿Te sirvió este tutorial?

    Sugerir una mejora