Repetir tareas con bucles

Ciencia y tecnologíaRepetir tareas con bucles

Cuando una operación debe realizarse varias veces no conviene copiarla repetidamente. Los bucles expresan repetición de forma controlada. En esta lección distinguirás un recorrido con una cantidad conocida de pasos y una repetición que depende de una condición. También aprenderás a seguir un acumulador y a evitar que un programa quede repitiéndose sin salida.

Repetir un número conocido de veces

El bucle for recorre elementos de una secuencia. Para generar una secuencia de enteros puedes utilizar range. En range(1, 4) el inicio está incluido y el final queda excluido. Por tanto se obtienen uno, dos y tres. Escribe este ejemplo en repeticion.py:

for numero in range(1, 4):
    print(f"Preparando paquete {numero}")
print("Preparación terminada")

El mensaje interior aparece tres veces y el último una sola vez. Como sucedía con las condiciones, la sangría define el bloque que se repite. Si introduces accidentalmente el mensaje final dentro del bloque lo verás después de cada paquete. El programa puede ejecutarse sin errores de sintaxis y aun así hacer algo distinto de lo previsto.

range(4) produce cero, uno, dos y tres. Es útil cuando necesitas cuatro repeticiones pero no siempre coincide con la numeración que quieres mostrar al usuario. Mantén separadas la cantidad de vueltas y la etiqueta visible. Más adelante utilizaremos enumerate para numerar listas de forma cómoda.

Acumular resultados

Un acumulador conserva un resultado parcial que cambia en cada vuelta. Debes inicializarlo antes del bucle. Para sumar varias cantidades el valor inicial suele ser cero. Si lo reinicias dentro perderás lo que habías calculado en las vueltas anteriores.

total = 0
for numero in range(1, 4):
    cantidad = int(input(f"Cantidad del paquete {numero}: "))
    total = total + cantidad
print(f"Total de objetos: {total}")

Prueba las cantidades dos, cuatro y uno. El acumulador pasa de cero a dos, después a seis y finalmente a siete. Anota esa traza en el cuaderno. El programa solicita tres entradas porque así lo indica range, no porque el total haya alcanzado una cifra concreta.

La forma total += cantidad expresa la misma actualización para este acumulador numérico. Puedes utilizarla cuando te resulte familiar pero no necesitas abreviar para programar correctamente. Durante el aprendizaje la forma completa puede ayudarte a recordar que se calcula un nuevo valor a partir del anterior.

Repetir mientras se cumpla una condición

while evalúa una condición antes de cada vuelta. Si es falsa desde el principio el bloque no se ejecuta ninguna vez. Si sigue siendo verdadera continuará repitiéndose. Por eso debes identificar qué dato cambia y cómo puede llegar a detenerse.

pendientes = 3
while pendientes > 0:
    print(f"Quedan {pendientes} comprobaciones")
    pendientes = pendientes - 1
print("No quedan comprobaciones")

Los mensajes muestran tres, dos y uno. Después la variable llega a cero y el bucle termina. Si eliminas la actualización pendientes = pendientes – 1 la condición permanece verdadera. Esa es una forma habitual de crear un bucle infinito por accidente. Revisa siempre el progreso antes de ejecutar un while.

Si un programa local queda repitiéndose puedes interrumpirlo con Ctrl+C en muchas terminales o utilizar la opción de detener de tu entorno. La combinación exacta puede depender de la aplicación. Interrumpir no corrige la causa: después debes revisar la condición y la actualización que faltaba.

Un menú que permite salir

Un menú sencillo puede repetirse hasta que la persona elija una opción de salida. Empezaremos con cadenas porque input devuelve texto. No necesitas convertir cada opción a entero si solo vas a compararla con valores concretos.

opcion = ""
while opcion != "0":
    opcion = input("1: saludar | 0: salir: ").strip()
    if opcion == "1":
        print("Hola, seguimos practicando")
    elif opcion != "0":
        print("Opción no válida")
print("Sesión cerrada")

La entrada se solicita dentro del bucle para que pueda cambiar en cada vuelta. Si la pidieras una única vez antes de entrar, la variable conservaría el mismo valor durante todas las repeticiones. Este detalle explica por qué algunos menús parecen ignorar al usuario después de la primera respuesta.

Otra forma de salir de un bucle es break. La utilizaremos en programas posteriores cuando la condición de salida se compruebe dentro del bloque. No lo añadas sin identificar a qué bucle afecta. En estructuras anidadas interrumpe el bucle más interno en el que se encuentra.

Elegir entre for y while

Usa for cuando quieras recorrer una colección o una secuencia conocida. Usa while cuando la continuación dependa de una condición que cambia durante el proceso. Ambas herramientas pueden resolver problemas parecidos pero una elección clara reduce el número de detalles que tienes que controlar manualmente.

No conviertas cada ejercicio en un bucle infinito con múltiples salidas dispersas. Para sumar tres cantidades un for resulta directo. Para esperar una orden de salida un while representa mejor la intención. Antes de escribirlo completa la frase «repito esto para cada…» o «repito esto mientras…». La formulación suele orientar la decisión.

Errores habituales

  • Olvidar que el límite final de range queda excluido.
  • Reiniciar el acumulador dentro del bloque repetido.
  • No actualizar la variable que controla un while.
  • Pedir una opción fuera del bucle y esperar que cambie sola.
  • Sangrar una instrucción final como si formara parte de cada vuelta.

Lo que deberías recordar

  • for recorre elementos y while depende de una condición.
  • Un acumulador se prepara antes de comenzar el recorrido.
  • Todo bucle condicionado necesita una forma comprensible de terminar.
  • Cero repeticiones puede ser un comportamiento perfectamente correcto.

Ejercicio práctico

Completa la octava hoja con la suma de tres cantidades: dos, cuatro y uno. Registra el total después de cada vuelta y comprueba el siete final. Después crea el menú de saludo y prueba una opción válida, una desconocida y la salida con cero.

Por último cambia range(1, 4) por range(1, 1) en una copia del acumulador. No se pedirá ninguna cantidad y el total quedará en cero. Explica ese resultado en el cuaderno. La práctica se considera resuelta cuando puedes indicar qué se repite, qué cambia y qué provoca el final en cada programa.

Siguiente capítulo: Organizar colecciones con listas.

Volver al índice del curso de programación desde cero.

Últimos posts

Artículos más vistos

Horóscopo diario
Menú diario