Saltar al contenido
🐍 Curso de Python
/

Módulo 1 · Lección 10 de 59

La instrucción if

Cómo ejecutar unas líneas solo cuando se cumple una condición, y por qué la sangría decide qué está dentro del bloque.

⏱ 10 min de lectura

Ya sabes formular preguntas que dan True o False. Lo que falta es que el programa haga algo distinto según la respuesta. Esa es la primera forma de control de flujo, y con ella tus programas dejan de ser una lista de pasos siempre igual para convertirse en algo que reacciona a los datos.

La forma básica#

python
edad = 20

if edad >= 18:
        print("Eres mayor de edad.")
Salida en pantalla
Eres mayor de edad.

Tres piezas, y las tres son obligatorias:

  1. La palabra if, seguida de un espacio y de la condición.
  2. Dos puntos al final de la línea.
  3. Debajo, el bloque de líneas que se ejecutan si la condición es verdadera, desplazadas cuatro espacios a la derecha.

Los dos puntos son la señal de "aquí abajo viene un bloque". Los verás en todas las estructuras del lenguaje: if, while, for, def, class. Cuando escribas dos puntos, la línea siguiente va siempre sangrada.

El bloque puede tener varias líneas#

Todo lo que esté sangrado al mismo nivel pertenece al bloque y se ejecuta junto:

python
saldo = 1200.50
retirada = 300

if retirada <= saldo:
        saldo = saldo - retirada
    print(f"Retirada aceptada: {retirada:.2f} €")
    print(f"Saldo restante: {saldo:.2f} €")

print("Operación terminada.")
Salida en pantalla
Retirada aceptada: 300.00 €
Saldo restante: 900.50 €
Operación terminada.

Las tres primeras líneas están dentro. La última no: está pegada al margen izquierdo, así que se ejecuta siempre, pase lo que pase con el if. La sangría es lo único que decide qué está dentro y qué está fuera. En otros lenguajes eso se marca con llaves y la sangría es decoración; aquí es parte de la sintaxis.

Qué pasa si la condición es falsa#

Nada. Python se salta el bloque entero y continúa por la primera línea que vuelva al margen:

python
temperatura = 12

if temperatura > 30:
        print("Hace calor.")

print("Fin del informe.")
Salida en pantalla
Fin del informe.

No hay error ni aviso. El bloque simplemente no ocurre, y eso tiene una consecuencia que conviene tener presente:

La condición no tiene que ser una comparación#

Esto sorprende al principio: entre if y los dos puntos puede ir cualquier valor, no solo una comparación. Python le aplica bool() por su cuenta y actúa según el resultado. Y ya sabes qué es falso para bool():

python
print(bool(0), bool(""), bool(None), bool("0"), bool(0.0))
Salida en pantalla
False False False True False

Así que estos dos if significan lo mismo, y el segundo es el que se escribe en la práctica:

python
articulos = 3

if articulos != 0:
        print(f"Tienes {articulos} artículos en el carrito.")

if articulos:
        print(f"Tienes {articulos} artículos en el carrito.")
Salida en pantalla
Tienes 3 artículos en el carrito.
Tienes 3 artículos en el carrito.

El caso más útil es comprobar si un texto está vacío. if nombre: se lee como "si hay nombre":

python
nombre = input("¿Cómo te llamas? ").strip()

if nombre:
        print(f"Hola, {nombre}.")
Salida en pantalla
¿Cómo te llamas? Erwin
Hola, Erwin.

Y como strip() deja vacía una cadena que solo tenía espacios, la combinación cubre también al usuario que pulsa Intro sin escribir nada o escribe tres espacios.

Un ejemplo completo#

control_acceso.py
PRECIO_ENTRADA = 12.00

edad = int(input("Edad: "))
socio = input("¿Eres socio? (s/n) ").strip().lower()

precio = PRECIO_ENTRADA
descuentos = ""

if edad < 18:
        precio = precio * 0.5
    descuentos = descuentos + "menor "

if socio == "s":
        precio = precio - 2
    descuentos = descuentos + "socio "

print()
print(f"{'Precio base:':<16}{PRECIO_ENTRADA:>8.2f} €")
print(f"{'Descuentos:':<16}{descuentos.strip():>8}")
print(f"{'Total:':<16}{precio:>8.2f} €")
Salida en pantalla
Edad: 15
¿Eres socio? (s/n) s

Precio base:       12.00 €
Descuentos:     menor socio
Total:              4.00 €

Fíjate en que los dos if son independientes: se comprueban los dos y se pueden cumplir los dos a la vez. Cuando las alternativas sean excluyentes necesitarás else y elif, que es la lección siguiente.

Los dos errores característicos#