Saltar al contenido
CodigoDev

10 Ejercicios resueltos de Estructuras de Control en Python

Python Básico
lightbulb Introducción al ejercicio

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.

menu_book

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)

help_outline Problema:

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.

code Solución explicada:
python
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)

help_outline Problema:

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.

code Solución explicada:
python
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)

help_outline Problema:

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.

code Solución explicada:
python
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)

help_outline Problema:

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.

code Solución explicada:
python
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)

help_outline Problema:

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.

code Solución explicada:
python
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)

help_outline Problema:

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.

code Solución explicada:
python
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)

help_outline Problema:

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.

code Solución explicada:
python
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)

help_outline Problema:

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.

code Solución explicada:
python
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

help_outline Problema:

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.

code Solución explicada:
python
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)

help_outline Problema:

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.

code Solución explicada:
python
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.
help

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.

task_alt

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!

rocket_launch

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.

A
Autor del artículo

Alejandro Nes

calendar_today update Actualizado

Desarrollador de Software y creador de contenido educativo

Otros ejercicios prácticos recomendados

Ver todos arrow_forward