PyQuiz 48 - for/else con break en Python | Quiz interactivo

PyQuiz 48 – for/else con break en Python

El reto

resultado = 0
for i in range(5):
    if i == 3:
        break
    resultado += i
else:
    resultado = -1
print(resultado)

¿Cuál es el resultado?

  • a) 3
  • b) -1
  • c) 6

Piensa tu respuesta antes de seguir leyendo…


Concepto: for/else con break

En Python, el bucle for (y también while) puede tener una cláusula else. El bloque else se ejecuta solo si el bucle terminó de forma natural (el iterable se agotó), pero NO se ejecuta si el bucle fue interrumpido con break.

Este patrón es especialmente útil para implementar búsquedas: si encuentras lo que buscas, haces break (y el else no corre); si recorres todo sin encontrarlo, el else se ejecuta para manejar el caso de «no encontrado».

# Ejemplo de búsqueda
for numero in [2, 4, 6, 7, 10]:
    if numero % 2 != 0:
        print(f'{numero} es impar')
        break
else:
    print('Todos son pares')  # no corre si hubo break

Paso a paso

  1. resultado = 0 — Se inicializa el acumulador.
  2. for i in range(5): — El bucle itera con i = 0, 1, 2, 3, 4.
  3. i=0: 0 == 3 es False. resultado += 0 → resultado = 0.
  4. i=1: 1 == 3 es False. resultado += 1 → resultado = 1.
  5. i=2: 2 == 3 es False. resultado += 2 → resultado = 3.
  6. i=3: 3 == 3 es True. Se ejecuta break. El bucle se interrumpe inmediatamente.
  7. Como el bucle terminó con break, el bloque else no se ejecuta. resultado sigue siendo 3.
  8. print(resultado) — Se imprime 3.

📥 Llévate el cheatsheet de Python (gratis)

PDF de 6 páginas con lo esencial: tipos, condicionales, bucles, estructuras de datos, funciones y los errores que más vas a cometer. Para tener al lado mientras programas.

Sin spam. Te apuntas a la lista, descargas el cheatsheet y recibes contenido de Python cada semana.

Solución

Respuesta correcta: A) 3

Suma 0+1+2=3, luego break en i=3. El else NO se ejecuta porque hubo break.

Sabías que…

El for/else es un patrón idiomático de Python para búsquedas, evitando variables flag:

# Sin for/else (necesita variable flag)
encontrado = False
for n in numeros:
    if n == objetivo:
        encontrado = True
        break
if not encontrado:
    print('No encontrado')

# Con for/else (más pythónico)
for n in numeros:
    if n == objetivo:
        print(f'Encontrado: {n}')
        break
else:
    print('No encontrado')

# También funciona con while:
i = 0
while i < 10:
    if condicion(i):
        break
    i += 1
else:
    print('Condición nunca cumplida')

Prueba tú mismo

En el mismo código pero con if i == 10 (un valor que nunca estará en range(5)), ¿qué valor tendría resultado al final? ¿Se ejecutaría el else?


Más PyQuizzes en elpythonista.com/pyquizzes

Tutorial relacionado: Bucles for y while

¿Quieres aprender Python en orden, no a saltos?

Esto que has leído es solo una pieza. En El Pythonista lo verás todo encadenado: 11 módulos, 37+ horas de vídeo, 734 actividades y un proyecto real (MovieTracker) que crece contigo desde la primera variable hasta el deploy a producción.

Ver el curso completo →

37+ horas · 734 actividades · Proyecto real · Acceso de por vida · 14 días de garantía

Compartir