PyQuiz 38 – enumerate() con start en Python

El reto
for i, v in enumerate('abc', 1):
pass
print(i, v)¿Cuál es el resultado?
- a) 3 c
- b) 2 c
- c) 3 b
Piensa tu respuesta antes de seguir leyendo…
Concepto: enumerate() con start
La función enumerate(iterable, start=0) devuelve pares (índice, valor) al iterar. El parámetro opcional start indica desde qué número comenzará el contador (por defecto es 0, pero se puede cambiar a cualquier entero).
Cuando usas enumerate('abc', 1), el primer par es (1, 'a'), el segundo (2, 'b') y el tercero (3, 'c'). El bucle for i, v in enumerate(...): desempaqueta cada par en las variables i (índice) y v (valor).
# Sin start: índices desde 0
for i, v in enumerate('abc'):
print(i, v) # 0 a / 1 b / 2 c
# Con start=1: índices desde 1
for i, v in enumerate('abc', 1):
print(i, v) # 1 a / 2 b / 3 cPaso a paso
enumerate('abc', 1)— Crea un iterador que produce:(1, 'a'),(2, 'b'),(3, 'c').- Primera iteración:
i=1, v='a'. Se ejecutapass(no hace nada). El bucle continúa. - Segunda iteración:
i=2, v='b'. Se ejecutapass. El bucle continúa. - Tercera iteración:
i=3, v='c'. Se ejecutapass. El iterable se agota y el bucle termina. print(i, v)— Tras el bucle,iyvconservan sus últimos valores:3y'c'. Se imprime3 c.
📥 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 c
enumerate('abc', 1) genera (1,'a'), (2,'b'), (3,'c'). Al final del bucle: i=3, v='c'.
Sabías que…
enumerate con start es perfecto para mostrar listas numeradas desde 1, como en menús o rankings:
peliculas = ['Inception', 'Matrix', 'Interstellar']
for pos, pelicula in enumerate(peliculas, 1):
print(f'{pos}. {pelicula}')
# 1. Inception
# 2. Matrix
# 3. Interstellar
# También puedes empezar desde cualquier número:
for i, letra in enumerate('xyz', start=24):
print(i, letra) # 24 x / 25 y / 26 zPrueba tú mismo
Si ejecutas for i, v in enumerate([10, 20, 30], 5): pass, ¿qué valores tienen i y v justo después de que termina el bucle?
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
