PyQuiz 38 - enumerate() con start en Python | Quiz interactivo

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 c

Paso a paso

  1. enumerate('abc', 1) — Crea un iterador que produce: (1, 'a'), (2, 'b'), (3, 'c').
  2. Primera iteración: i=1, v='a'. Se ejecuta pass (no hace nada). El bucle continúa.
  3. Segunda iteración: i=2, v='b'. Se ejecuta pass. El bucle continúa.
  4. Tercera iteración: i=3, v='c'. Se ejecuta pass. El iterable se agota y el bucle termina.
  5. print(i, v) — Tras el bucle, i y v conservan sus últimos valores: 3 y 'c'. Se imprime 3 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 z

Prueba 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.

Ver el curso completo →

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

Compartir