10 Ejercicios resueltos de Estructuras de Control en Python
Domina la lógica de programación con estos ejercicios resueltos de estructuras de control en Python. Aprende if, for y while con ejemplos prácticos y explicaciones claras paso a paso.
Aprendizaje teórico
Aprendizaje Teórico: ¿Qué son las Estructuras de Control?
Antes de escribir código, es fundamental entender cómo «piensa» un programa. Por defecto, Python lee las instrucciones de arriba hacia abajo, una por una. Las estructuras de control de flujo nos permiten cambiar ese orden para tomar decisiones o repetir tareas.
Imagina que estás dirigiendo el tráfico. Sin estas estructuras, todos los coches irían en línea recta. Con ellas, puedes decir: «Si el semáforo está en rojo, detente» (Condicionales) o «Da 5 vueltas a la rotonda» (Bucles).
Los tres pilares que usaremos hoy son:
- Condicionales (if, elif, else): permiten elegir qué instrucciones ejecutar según se cumpla o no una condición.
- Bucle for: sirve para recorrer elementos o repetir una tarea una cantidad determinada de veces.
- Bucle while: repite instrucciones mientras una condición sea verdadera. Es importante que esa condición pueda dejar de cumplirse para evitar un bucle infinito.
Antes de mirar las soluciones: intenta resolver cada problema por tu cuenta. Aunque no lo consigas a la primera, practicar te ayudará a comprender mejor cómo funcionan las estructuras de control en Python.
Ejercicio 1: El portero de la discoteca (Condicional if/else)
Crea un programa que solicite la edad de una persona y determine si puede entrar a una discoteca. Si tiene 18 años o más, muestra «Puedes entrar». En caso contrario, muestra «No puedes pasar». Comprueba también que la edad no sea negativa.
Pista
Compara la edad con 18 utilizando >=. Puedes usar otro if para descartar edades negativas antes de decidir el acceso.
edad = int(input("Por favor, introduce tu edad: "))
if edad < 0:
print("Introduce una edad válida.")
elif edad >= 18:
print("Puedes entrar.")
else:
print("No puedes pasar.")
terminal Resultado esperado:
Si introduces 20, aparece Puedes entrar.. Si introduces 16, aparece No puedes pasar.. Si introduces -2, aparece Introduce una edad válida.
Ejercicio 2: Par o Impar (Operador Módulo)
Pide un número entero e indica si es par o impar. El programa debe funcionar también con el cero y los números negativos.
Pista
El operador % permite conocer el resto de una división. Si el resto de dividir entre 2 es cero, el número es par.
numero = int(input("Introduce un número entero: "))
if numero % 2 == 0:
print(f"El número {numero} es PAR.")
else:
print(f"El número {numero} es IMPAR.")
terminal Resultado esperado:
Con 8: El número 8 es PAR.. Con 7: El número 7 es IMPAR.
Ejercicio 3: Calculadora de Descuentos (Condicional elif)
Una tienda aplica descuentos según el importe de compra: menos de $100, sin descuento; de $100 a $500, un 5 %; más de $500, un 10 %. Solicita el importe y muestra el total a pagar con dos decimales. Si el importe es negativo, informa que no es válido.
Pista
Revisa los rangos en orden con if, elif y else. Multiplica el importe por el porcentaje de descuento y resta esa cantidad del total.
compra = float(input("Introduce el monto de la compra: "))
if compra < 0:
print("El monto de compra no puede ser negativo.")
else:
if compra < 100:
descuento = 0
elif compra <= 500:
descuento = 0.05
else:
descuento = 0.10
precio_final = compra * (1 - descuento)
print(f"El precio final a pagar es: ${precio_final:.2f}")
terminal Resultado esperado:
Con 200, aparece El precio final a pagar es: $190.00. Con 600, aparece $540.00.
Ejercicio 4: La Tabla de Multiplicar (Bucle for)
Solicita un número entero y muestra su tabla de multiplicar del 1 al 10, con una operación en cada línea.
Pista
Utiliza range(1, 11) para recorrer los números del 1 al 10 y multiplica cada uno por el número ingresado.
numero = int(input("¿De qué número quieres la tabla?: "))
print(f"--- Tabla del {numero} ---")
for i in range(1, 11):
print(f"{numero} x {i} = {numero * i}")
terminal Resultado esperado:
Con 3, comienza con 3 x 1 = 3, sigue con 3 x 2 = 6 y termina con 3 x 10 = 30.
Ejercicio 5: Sumatoria de números (Bucle while)
Crea un programa que permita introducir varios números enteros y vaya sumándolos. Cuando el usuario escriba 0, debe detenerse y mostrar la suma acumulada.
Pista
Usa un acumulador iniciado en cero y un bucle while. Puedes salir del bucle con break al recibir el número cero.
total = 0
print("Introduce números para sumar. Escribe 0 para terminar.")
while True:
numero = int(input("Número: "))
if numero == 0:
break
total += numero
print(f"La suma total es: {total}")
terminal Resultado esperado:
Si introduces 5, 8, -2 y 0, aparece La suma total es: 11.
Ejercicio 6: Contador de Vocales (Bucle for + if)
Solicita una frase y cuenta cuántas vocales contiene. Debe reconocer las vocales en mayúsculas y minúsculas, incluidas las que llevan tilde.
Pista
Recorre la frase letra por letra y comprueba si cada carácter pertenece a una cadena con las vocales que quieres contar.
frase = input("Escribe una frase: ").lower()
vocales = "aeiouáéíóúü"
contador = 0
for letra in frase:
if letra in vocales:
contador += 1
print(f"Tu frase tiene {contador} vocales.")
terminal Resultado esperado:
Con Hola mundo, aparece Tu frase tiene 4 vocales.. Con Python, aparece Tu frase tiene 1 vocales. (el programa cuenta correctamente, aunque la frase de salida sea genérica).
Ejercicio 7: Validación de Contraseña (Bucle while con break)
Define una contraseña de ejemplo y permite al usuario intentar escribirla hasta tres veces. Si coincide, muestra un mensaje de acceso concedido y termina. Si falla los tres intentos, informa que se han agotado. Este ejemplo es educativo: no debe usarse como sistema real de autenticación.
Pista
Lleva la cuenta de los intentos con una variable. Utiliza break cuando la contraseña sea correcta.
secreto = "python123"
intentos = 0
while intentos < 3:
clave = input("Introduce la contraseña: ")
if clave == secreto:
print("¡Acceso concedido!")
break
intentos += 1
print("Contraseña incorrecta.")
if intentos == 3:
print("Has agotado tus intentos. Cuenta bloqueada.")
terminal Resultado esperado:
Al escribir python123, aparece ¡Acceso concedido!. Tras tres contraseñas incorrectas, aparece Has agotado tus intentos. Cuenta bloqueada..
Ejercicio 8: El juego FizzBuzz (Clásico de entrevistas)
Muestra los números del 1 al 15. Sustituye los múltiplos de 3 por Fizz, los de 5 por Buzz y los que sean múltiplos de ambos por FizzBuzz. Los demás deben mostrarse normalmente.
Pista
Comprueba primero si el número es divisible entre 3 y entre 5 a la vez. Después evalúa las condiciones por separado.
for n in range(1, 16):
if n % 3 == 0 and n % 5 == 0:
print("FizzBuzz")
elif n % 3 == 0:
print("Fizz")
elif n % 5 == 0:
print("Buzz")
else:
print(n)
terminal Resultado esperado:
1 2 Fizz 4 Buzz Fizz 7 8 Fizz Buzz 11 Fizz 13 14 FizzBuzz
Ejercicio 9: Encontrar el número mayor en una lista
Recorre la lista [14, 5, 20, 100, 2, 45] y encuentra el número más grande sin utilizar la función max().
Pista
Comienza suponiendo que el primer elemento es el mayor. Compara los demás números y actualiza esa variable cuando encuentres uno más grande.
numeros = [14, 5, 20, 100, 2, 45]
mayor = numeros[0]
for num in numeros[1:]:
if num > mayor:
mayor = num
print(f"El número más grande de la lista es: {mayor}")
terminal Resultado esperado:
El número más grande de la lista es: 100.
Ejercicio 10: Menú de opciones (Estructura de control completa)
Construye un menú que permita elegir entre saludar, sumar dos números o salir. El menú debe aparecer de nuevo después de cada operación y avisar cuando se introduzca una opción no válida.
Pista
Combina un bucle while para mantener el menú activo con if, elif y else para decidir qué acción realizar.
while True:
print("\n--- MENÚ PRINCIPAL ---")
print("1. Saludar")
print("2. Sumar dos números")
print("3. Salir")
opcion = input("Elige una opción: ")
if opcion == "1":
print("¡Hola! Espero que estés aprendiendo mucho.")
elif opcion == "2":
n1 = float(input("Primer número: "))
n2 = float(input("Segundo número: "))
print(f"La suma es: {n1 + n2:g}")
elif opcion == "3":
print("¡Hasta luego!")
break
else:
print("Opción no válida, intenta de nuevo.")
terminal Resultado esperado:
Si eliges 1, aparece un saludo. Si eliges 2 e introduces 4 y 6, aparece La suma es: 10. Si eliges 3, aparece ¡Hasta luego! y el programa termina.
Preguntas frecuentes
¿Cuándo debo usar for y cuándo debo usar while?
Usa for cuando quieras recorrer elementos o repetir una acción un número conocido de veces. Elige while cuando necesites seguir repitiendo una tarea hasta que se cumpla una condición, como esperar a que alguien seleccione «Salir».
¿Qué significa el error IndentationError en Python?
Significa que hay un problema con los espacios al inicio de alguna línea. Python utiliza esos espacios para saber qué instrucciones pertenecen a un if, un for o un while. Revisa que las líneas de cada bloque estén correctamente alineadas.
¿Puedo poner un if dentro de otro if?
¡Claro! Puedes colocar condiciones dentro de otras condiciones o dentro de bucles. Esto te permite resolver problemas más completos. Lo importante es mantener el código ordenado y fácil de leer.
Conclusión
¡Muy bien por llegar hasta aquí! Con estos 10 ejercicios resueltos de estructuras de control en Python ya has practicado cómo tomar decisiones con if, elif y else, repetir instrucciones con for y while, y combinar estas herramientas para resolver situaciones cotidianas.
No necesitas memorizar cada línea de código. Lo importante es comprender por qué funciona cada solución. Prueba cambiar los números, escribir tus propias condiciones o añadir nuevas opciones a los programas. Ver qué ocurre cuando experimentas es una de las mejores formas de aprender Python.
Si algún ejercicio te costó, vuelve a intentarlo sin mirar la solución. Con práctica, estos conceptos se volverán cada vez más naturales. ¡Sigue creando y aprendiendo a tu ritmo!
Sigue aprendiendo
¿Quieres practicar más? La guía oficial de Python explica cómo funcionan las condiciones y los bucles con ejemplos que puedes probar por tu cuenta.
Si estás empezando, esta guía te ayudará a reforzar los fundamentos de Python y avanzar paso a paso.
Repasa if, for y while con explicaciones y pequeños ejemplos para seguir practicando.
Sigue practicando
Otros ejercicios prácticos recomendados
10 Ejercicios resueltos de Funciones y Módulos en Python
10 ejercicios resueltos de funciones y módulos en Python. Aprende a estructurar programas reutilizables y limpios paso a paso.