
Hasta ahora nuestros programas ejecutaban siempre las mismas instrucciones. Después de aprender a trabajar con cadenas de texto y a solicitar datos al usuario mediante input(), ha llegado el momento de crear programas capaces de tomar decisiones. En este capítulo aprenderemos a utilizar las estructuras condicionales if, elif y else, que permiten ejecutar diferentes bloques de código según se cumpla o no una condición.
1. ¿Qué es una estructura condicional?
Hasta ahora todos nuestros programas ejecutaban las instrucciones siempre en el mismo orden. Sin embargo, en muchas ocasiones necesitamos que el programa tome decisiones.
Por ejemplo:
- Si una persona es mayor de edad, mostrar un mensaje.
- Si una nota es inferior a 5, indicar que está suspendida.
- Si una contraseña es correcta, permitir el acceso.
Para ello utilizamos las estructuras condicionales.
Una condición es una expresión cuyo resultado es True o False.
Por ejemplo:
edad >= 18 # True o False nota < 5 # True o False nombre == "Ana" # True o False
Si la condición es verdadera, Python ejecutará unas instrucciones. Si es falsa, podrá ejecutar otras diferentes.
¿La condición es True?
│
┌────────┴────────┐
Sí No
│ │
Ejecuta el bloque Salta el bloque
│ │
└────────┬─────────┘
│
Continúa el programa
2. La instrucción if
La estructura condicional más sencilla es if.
La condición puede ser cualquier expresión cuyo resultado sea True o False, ya sea una comparación, una variable booleana o una combinación de varias condiciones.
Su sintaxis es:
if condicion:
instrucciones
Observa que la línea termina con dos puntos (:).
Las instrucciones que pertenecen al if deben escribirse con sangría (indentación).
Por ejemplo:
edad = 20
if edad >= 18:
print("Eres mayor de edad.")
print("Fin del programa")
Solo la instrucción con sangría pertenece al if. Cuando la sangría desaparece, el programa continúa normalmente.
Resultado:
Eres mayor de edad. Fin del programa
Si cambiamos el valor:
edad = 15
Resultado:
Fin del programa
Consejo: En Python la sangría es obligatoria. Normalmente se utilizan cuatro espacios para indicar qué instrucciones pertenecen al bloque del if.
La condición también puede ser una variable de tipo bool. Si su valor es True, el bloque de instrucciones se ejecutará. Si su valor es False, Python lo omitirá.
Por ejemplo:
es_mayor = True
if es_mayor:
print("Puedes entrar.")
Resultado:
Puedes entrar.
3. La instrucción if…else
En muchas ocasiones queremos ejecutar una acción cuando la condición es verdadera y otra diferente cuando es falsa.
Para ello utilizamos else.
if condicion:
instrucciones
else:
otras instrucciones
Ejemplo:
edad = int(input("Edad: "))
if edad >= 18:
print("Puedes acceder.")
else:
print("No puedes acceder.")
Observa que la condición utiliza un operador de comparación (>=). En las condiciones siempre utilizamos operadores de comparación como ==, !=, <, >, <= o >=, nunca el operador de asignación (=).
4. La instrucción if…elif…else
Cuando existen varias posibilidades utilizamos elif.
if condicion1:
...
elif condicion2:
...
else:
...
No es obligatorio utilizar elif ni else. Un if puede aparecer solo, acompañado de else o junto con tantos elif como sean necesarios.
Ejemplo:
nota = float(input("Nota: "))
if nota >= 9:
print("Sobresaliente")
elif nota >= 7:
print("Notable")
elif nota >= 5:
print("Aprobado")
else:
print("Suspenso")
Python comprueba las condiciones de arriba hacia abajo.
En cuanto encuentra una verdadera deja de comprobar las siguientes.
Consejo: Coloca primero las condiciones más restrictivas. Si una condición anterior ya se cumple, Python no comprobará las siguientes.
Por ejemplo, este código contiene un error:
nota = 8
if nota >= 5:
print("Aprobado")
elif nota >= 7:
print("Notable")
El resultado será:
Aprobado
Aunque la nota sea 8, nunca se mostrará «Notable», porque la primera condición (nota >= 5) ya se cumple y Python deja de comprobar las siguientes.
La forma correcta es escribir primero las condiciones más restrictivas:
nota = 8
if nota >= 9:
print("Sobresaliente")
elif nota >= 7:
print("Notable")
elif nota >= 5:
print("Aprobado")
else:
print("Suspenso")
¿Sabías que…? La palabra elif es una abreviatura de else if («si no, si…»). Python utiliza una sola palabra en lugar de escribir else if como ocurre en otros lenguajes.
5. Condiciones múltiples con and, or y not
Las condiciones también pueden combinarse. Cuando una única condición no es suficiente, podemos combinar varias utilizando operadores lógicos.
and
Todas las condiciones deben cumplirse.
Supongamos que queremos comprobar si una persona puede conducir.
edad = 20
carnet = True
if edad >= 18 and carnet:
print("Puedes conducir.")
or
Basta con que una condición sea verdadera.
Supongamos que queremos comprobar si una persona tiene entrada reducida.
if edad < 18 or edad > 65:
print("Entrada reducida.")
not
Invierte el resultado.
Supongamos que queremos comprobar si una persona tiene carnet.
if not carnet:
print("No puedes conducir.")
Las siguientes tablas muestran cómo funciona cada operador lógico.
Operador and
| Condición 1 | Condición 2 | Resultado |
|---|---|---|
| True | True | True |
| True | False | False |
| False | True | False |
| False | False | False |
Operador or
| Condición 1 | Condición 2 | Resultado |
|---|---|---|
| True | True | True |
| True | False | True |
| False | True | True |
| False | False | False |
Operador not
| Condición | Resultado |
|---|---|
| True | False |
| False | True |
Consejo: Cuando una condición sea muy larga, utiliza paréntesis para facilitar la lectura.
6. Errores habituales
| Error | Solución |
|---|---|
Olvidar los dos puntos (:) después del if, elif o else | Añadir : al final de la línea. |
| No escribir la sangría | Indentar el bloque con cuatro espacios. |
Escribir = en lugar de == | Utilizar == para comparar valores. |
Escribir else condicion: | Recordar que else nunca lleva condición. |
Escribir elif después de else | else siempre debe ir al final. |
Consejo: Si aparece un IndentationError, revisa primero la sangría del bloque.
Ya sabemos hacer que un programa tome decisiones según los datos introducidos por el usuario. En el siguiente capítulo aprenderemos a repetir instrucciones mediante los bucles while y for, evitando escribir el mismo código varias veces.
7. Actividad
Crea un archivo llamado acceso_evento.py.
Solicita al usuario la siguiente información:
- Su nombre.
- Su edad.
- Si dispone de invitación (escribe
son).
Después:
- Si tiene 18 años o más, permite el acceso.
- Si es menor de edad pero tiene invitación, permite el acceso indicando que entra con autorización.
- En cualquier otro caso, indica que no puede acceder.
Por último, muestra un mensaje personalizado con el nombre del usuario.
Ejemplo de ejecución 1
Nombre: Andrea Edad: 20 ¿Tienes invitación? (s/n): n Hola Andrea. Puedes acceder al evento.
Ejemplo de ejecución 2
Nombre: Pablo Edad: 16 ¿Tienes invitación? (s/n): s Hola Pablo. Puedes acceder al evento con autorización.
Ejemplo de ejecución 3
Nombre: Lucía Edad: 15 ¿Tienes invitación? (s/n): n Hola Lucía. No puedes acceder al evento.
8. Prácticas resueltas
Los siguientes ejercicios muestran distintas aplicaciones de las estructuras condicionales if, elif y else. Intenta resolver cada uno por tu cuenta antes de consultar la solución.
8.1. Mayor de edad
Solicita la edad e indica si la persona es mayor o menor de edad.
Solución
edad = int(input("Edad: "))
if edad >= 18:
print("Eres mayor de edad.")
else:
print("Eres menor de edad.")
8.2. Número positivo, negativo o cero
Solicita un número e indica si es positivo, negativo o cero.
Solución
numero = float(input("Número: "))
if numero > 0:
print("Positivo")
elif numero < 0:
print("Negativo")
else:
print("Cero")
8.3. Comparar dos números
Solicita dos números e indica cuál es mayor o si son iguales.
Solución
numero1 = float(input("Primer número: "))
numero2 = float(input("Segundo número: "))
if numero1 > numero2:
print("El primer número es mayor.")
elif numero2 > numero1:
print("El segundo número es mayor.")
else:
print("Los dos números son iguales.")
8.4. Calculadora de descuentos
Solicita el importe de una compra.
Si es igual o superior a 100 €, aplica un 10 % de descuento.
En caso contrario no apliques ningún descuento.
Solución
importe = float(input("Importe: "))
if importe >= 100:
total = importe * 0.9
else:
total = importe
print("Importe sin descuento:", importe)
print("Importe final:", total)
8.5. Clasificación de notas
Solicita una nota entre 0 y 10.
Muestra:
- Suspenso
- Aprobado
- Notable
- Sobresaliente
- Si el usuario introduce un valor fuera del rango 0–10, muestra un mensaje indicando que la nota no es válida.
Solución
nota = float(input("Nota: "))
if nota < 0 or nota > 10:
print("La nota debe estar entre 0 y 10.")
elif nota >= 9:
print("Sobresaliente")
elif nota >= 7:
print("Notable")
elif nota >= 5:
print("Aprobado")
else:
print("Suspenso")
9. Test de autoevaluación
Comprueba si has comprendido los conceptos principales de este capítulo respondiendo al siguiente test. Si alguna respuesta no es correcta, revisa el apartado correspondiente antes de continuar con el siguiente tema.
9.1. ¿Para qué se utiliza una estructura condicional?
a) Para repetir instrucciones.
b) Para tomar decisiones durante la ejecución del programa. ✅
c) Para crear variables.
d) Para escribir comentarios.
Retroalimentación: Las estructuras condicionales permiten ejecutar diferentes instrucciones según se cumpla o no una condición.
9.2. ¿Qué resultado produce una condición?
a) Un número.
b) Un texto.
c) Un valor True o False. ✅
d) Una lista.
Retroalimentación: Toda condición devuelve un valor lógico: True o False.
9.3. ¿Qué mostrará este programa?
edad = 20
if edad >= 18:
print("Mayor de edad")
a) Mayor de edad. ✅
b) Menor de edad.
c) Error.
d) No muestra nada.
Retroalimentación: Como la condición es verdadera, se ejecuta el bloque del if.
9.4. ¿Qué ocurre si la condición de un if es falsa y no existe un else?
a) Se produce un error.
b) Se ejecuta igualmente el bloque.
c) El bloque del if se ignora y el programa continúa. ✅
d) El programa termina.
Retroalimentación: Si la condición es falsa, Python continúa con la siguiente instrucción.
9.5. ¿Qué estructura permite ejecutar instrucciones cuando la condición es falsa?
a) while
b) for
c) else ✅
d) elif
Retroalimentación: else ejecuta un bloque alternativo cuando ninguna condición anterior se cumple.
9.6. ¿Cuándo se utiliza elif?
a) Para repetir instrucciones.
b) Para comprobar una condición adicional cuando la anterior es falsa. ✅
c) Para finalizar un programa.
d) Para crear variables.
Retroalimentación: elif permite comprobar varias condiciones sin escribir varios if independientes.
9.7. ¿Qué mostrará este programa?
nota = 8
if nota >= 9:
print("Sobresaliente")
elif nota >= 7:
print("Notable")
else:
print("Suspenso")
a) Sobresaliente.
b) Notable. ✅
c) Suspenso.
d) No muestra nada.
Retroalimentación: La primera condición es falsa, pero la segunda es verdadera.
9.8. ¿Qué operador se utiliza para comprobar si dos valores son iguales?
a) =
b) == ✅
c) >=
d) !=
Retroalimentación: == compara valores. El operador = sirve para asignar valores a una variable.
9.9. ¿Qué operador lógico exige que todas las condiciones sean verdaderas?
a) or
b) not
c) and ✅
d) ==
Retroalimentación: Con and todas las condiciones deben cumplirse.
9.10. ¿Qué operador lógico devuelve True si al menos una condición es verdadera?
a) and
b) or ✅
c) not
d) ==
Retroalimentación: or solo necesita que una de las condiciones sea verdadera.
9.11. ¿Qué hace el operador not?
a) Compara dos valores.
b) Invierte el valor lógico de una condición. ✅
c) Repite un bloque.
d) Comprueba si dos números son iguales.
Retroalimentación: not convierte True en False y viceversa.
9.12. ¿Cuál de estos fragmentos contiene un error?
a)
if edad >= 18:
print("Mayor")
b)
if edad >= 18
print("Mayor")
✅
c)
if edad >= 18:
print("Mayor")
else:
print("Menor")
d)
if edad == 18:
print("Tiene 18 años")
Retroalimentación: Después de if siempre deben escribirse los dos puntos (:).
9.13. ¿Qué mostrará este programa?
edad = 16
if edad >= 18:
print("Mayor")
else:
print("Menor")
a) Mayor.
b) Menor. ✅
c) True.
d) False.
Retroalimentación: Como la condición es falsa, se ejecuta el bloque del else.
9.14. ¿Qué ocurre cuando una condición de una cadena if-elif-else es verdadera?
a) Python sigue comprobando todas las demás condiciones.
b) Python deja de comprobar condiciones y ejecuta ese bloque. ✅
c) Se produce un error.
d) Se ejecutan todos los bloques.
Retroalimentación: En cuanto encuentra una condición verdadera, Python ya no evalúa las siguientes.
9.15. ¿Cuál de las siguientes afirmaciones es correcta?
a) else puede llevar una condición.
b) elif siempre debe ir después de else.
c) Un if puede utilizarse sin elif ni else. ✅
d) Todas las condiciones deben escribirse con =.
Retroalimentación: Un if puede aparecer solo, acompañado de else o junto con tantos elif como sean necesarios.
10. Actividad de ampliación
Descubre otra forma de escribir condiciones
En este capítulo hemos aprendido a utilizar las estructuras if, elif y else para que un programa tome decisiones. Sin embargo, algunos lenguajes de programación disponen de otras estructuras similares.
Investiga cómo se escriben las estructuras condicionales en otro lenguaje de programación, como Java, JavaScript o C#.
Después responde a las siguientes preguntas:
- ¿Qué lenguaje has elegido?
- ¿Cómo se escribe una estructura
if...elseen ese lenguaje? - ¿Qué diferencias encuentras respecto a Python?
- ¿Qué aspectos te parecen más sencillos y cuáles más complicados?
Objetivo: comprobar que la toma de decisiones es un concepto común en todos los lenguajes de programación y aprender a identificar las diferencias de sintaxis entre ellos.