10 Ejercicios resueltos de Estructuras de Control en Python

Domina el Flujo en Python: 10 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: ¿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 al programa elegir entre diferentes caminos según si una condición es Verdadera o Falsa.
  • Bucle for: Ideal para recorrer una lista de cosas o repetir una acción un número determinado de veces.
  • Bucle while: Repite una acción mientras una condición se mantenga verdadera (cuidado con los bucles infinitos).

¡Inténtalo tú primero!

🧠 El Reto del Programador:

La mejor forma de aprender a programar es enfrentándote al problema antes de ver la solución.

En los siguientes ejercicios, leerás primero el planteamiento. Detente ahí, abre tu editor de código (o una hoja de papel) e intenta resolverlo. Solo cuando tengas tu versión (o si te quedas muy atascado), mira la solución propuesta. ¡No hay trampas, solo aprendizaje!

Ejercicios Resueltos

Ejercicio 1: El portero de la discoteca (Condicional if/else)

El Problema: Escribe un programa que pida al usuario su edad. Si el usuario tiene 18 años o más, debe imprimir «Puedes entrar». Si es menor de 18, debe imprimir «No puedes pasar».

# Pedimos la edad al usuario y la convertimos a entero
edad = int(input("Por favor, introduce tu edad: "))

# Verificamos si la edad es mayor o igual a 18
if edad >= 18:
    print("Puedes entrar.")
else:
    # Si la condición de arriba no se cumple, se ejecuta esto
    print("No puedes pasar.")

Ejercicio 2: Par o Impar (Operador Módulo)

El Problema: Crea un programa que solicite un número entero al usuario y determine si es un número par o impar.

numero = int(input("Introduce un número entero: "))

# El operador % nos da el resto de una división.
# Si al dividir por 2 el resto es 0, es par.
if numero % 2 == 0:
    print(f"El número {numero} es PAR.")
else:
    print(f"El número {numero} es IMPAR.")

Ejercicio 3: Calculadora de Descuentos (Condicional elif)

El Problema: Una tienda ofrece descuentos según el monto de compra.

  • Menos de 100$: Sin descuento.
  • Entre 100$ y 500$: 5% de descuento.
  • Más de 500$: 10% de descuento. Escribe un script que calcule el precio final.
compra = float(input("Introduce el monto de la compra: "))
descuento = 0

if compra < 100:
    descuento = 0
elif compra <= 500: # Si llega aquí, ya sabemos que es >= 100
    descuento = 0.05
else: # Si llega aquí, es mayor a 500
    descuento = 0.10

precio_final = compra - (compra * descuento)
print(f"El precio final a pagar es: ${precio_final}")

Ejercicio 4: La Tabla de Multiplicar (Bucle for)

El Problema: Pide un número al usuario y muestra su tabla de multiplicar del 1 al 10 usando un bucle.

numero = int(input("¿De qué número quieres la tabla?: "))

# range(1, 11) genera números del 1 al 10 (el 11 no se incluye)
print(f"--- Tabla del {numero} ---")
for i in range(1, 11):
    resultado = numero * i
    print(f"{numero} x {i} = {resultado}")

Ejercicio 5: Sumatoria de números (Bucle while)

El Problema: Crea un programa que sume números introducidos por el usuario. El programa debe seguir pidiendo números hasta que el usuario introduzca un 0. Al final, debe mostrar la suma total.

total = 0
numero = 1 # Iniciamos con un valor distinto de 0 para entrar al bucle

print("Introduce números para sumar. Escribe 0 para terminar.")

while numero != 0:
    numero = int(input("Número: "))
    total += numero # Esto es igual a: total = total + numero

print(f"La suma total es: {total}")

Ejercicio 6: Contador de Vocales (Bucle for + if)

El Problema: Solicita una frase al usuario y cuenta cuántas vocales (a, e, i, o, u) contiene.

frase = input("Escribe una frase: ").lower() # Convertimos a minúsculas
vocales = "aeiou"
contador = 0

for letra in frase:
    # Verificamos si la letra actual está en la cadena "aeiou"
    if letra in vocales:
        contador += 1

print(f"Tu frase tiene {contador} vocales.")

Ejercicio 7: Validación de Contraseña (Bucle while con break)

El Problema: Define una contraseña correcta en una variable (ej: «python123»). Pide al usuario que la introduzca. Tiene 3 intentos. Si acierta, imprime «Acceso concedido». Si agota los intentos, imprime «Cuenta bloqueada».

secreto = "python123"
intentos = 0

while intentos < 3:
    clave = input("Introduce la contraseña: ")
    
    if clave == secreto:
        print("¡Acceso concedido!")
        break # Rompemos el bucle porque ya acertó
    else:
        print("Contraseña incorrecta.")
        intentos += 1

if intentos == 3:
    print("Has agotado tus intentos. Cuenta bloqueada.")

Ejercicio 8: El juego FizzBuzz (Clásico de entrevistas)

El Problema: Imprime los números del 1 al 15.

  • Si el número es múltiplo de 3, imprime «Fizz».
  • Si es múltiplo de 5, imprime «Buzz».
  • Si es múltiplo de ambos (como el 15), imprime «FizzBuzz».
  • Si no, imprime el número.
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)

Ejercicio 9: Encontrar el número mayor en una lista

El Problema: Dada la lista de números [14, 5, 20, 100, 2, 45], escribe un programa que recorra la lista y encuentre el número más grande sin usar la función max().

numeros = [14, 5, 20, 100, 2, 45]
mayor = numeros[0] # Asumimos que el primero es el mayor

for num in numeros:
    # Si encontramos uno más grande que el actual 'mayor', actualizamos
    if num > mayor:
        mayor = num

print(f"El número más grande de la lista es: {mayor}")

Ejercicio 10: Menú de opciones (Estructura de control completa)

El Problema: Crea un menú interactivo que se repita hasta que el usuario elija salir.

  1. Saludar
  2. Sumar dos números
  3. Salir
opcion = 0

while opcion != 3:
    print("\n--- MENÚ PRINCIPAL ---")
    print("1. Saludar")
    print("2. Sumar dos números")
    print("3. Salir")
    
    opcion = int(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}")
    elif opcion == 3:
        print("¡Hasta luego!")
    else:
        print("Opción no válida, intenta de nuevo.")

Preguntas Frecuentes (FAQs)

¿Cuándo debo usar for y cuándo debo usar while?

Usa for cuando sepas de antemano cuántas veces necesitas repetir algo (por ejemplo, recorrer una lista de 10 elementos). Usa while cuando no sepas cuándo terminará el bucle, ya que depende de una condición externa (como que el usuario escriba «salir»).

¿Qué significa el error IndentationError en Python?

El control de flujo en Python depende de la «sangría» (espacios al inicio de la línea). Si el código dentro de un if o un for no está alineado correctamente a la derecha, Python no sabrá qué instrucciones pertenecen a ese bloque y lanzará este error.

¿Puedo poner un if dentro de otro if?

¡Sí! Esto se llama anidamiento. Puedes poner condiciones dentro de bucles, bucles dentro de condiciones, y cualquier combinación que necesites. Solo asegúrate de mantener la indentación ordenada para no perderte.

Conclusión

¡Felicidades por llegar hasta aquí! Las estructuras de control son el esqueleto de cualquier programa. Al principio puede parecer mucha lógica, pero con estos ejercicios de Python has dado un gran paso para dejar de escribir código lineal y empezar a crear programas dinámicos e inteligentes.

Recuerda: la programación es como un deporte, la única forma de mejorar es practicando. No tengas miedo de modificar estos ejercicios, romper el código y volver a arreglarlo.

¿Quieres seguir aprendiendo?

Si te has quedado con ganas de más retos o quieres profundizar en otros temas como funciones o bases de datos, visita nuestro blog para acceder a más tutoriales gratuitos y guías paso a paso. ¡Tu camino como desarrollador acaba de empezar!

No pares de aprender¡Hay mucho más esperándote! Sigue aprendiendo dentro y fuera de nuestra web.
Ejercicios de Java, Javascript, Python, PHP, MySQL y mucho más
Comparte este artículo
Alejandro Nes
Alejandro Nes

¡Hola! Soy Alejandro Nes, desarrollador web con formación en informática y apasionado por la creación de contenido educativo. Aprendamos juntos a programar :)

Artículos: 26