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 breakPaso a paso
resultado = 0— Se inicializa el acumulador.for i in range(5):— El bucle itera coni = 0, 1, 2, 3, 4.i=0:0 == 3esFalse.resultado += 0→resultado = 0.i=1:1 == 3esFalse.resultado += 1→resultado = 1.i=2:2 == 3esFalse.resultado += 2→resultado = 3.i=3:3 == 3esTrue. Se ejecutabreak. El bucle se interrumpe inmediatamente.- Como el bucle terminó con
break, el bloqueelseno se ejecuta.resultadosigue siendo3. print(resultado)— Se imprime3.
📥 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.
37+ horas · 734 actividades · Proyecto real · Acceso de por vida · 14 días de garantía
