ComenzarEmpieza gratis

Bucle de cálculo único

Se ha cargado en tu sesión una lista de números enteros que representa la generación de cada Pokémon, llamada generations. Te gustaría reunir los recuentos de cada generación y determinar qué porcentaje representa cada generación sobre el recuento total de enteros.

El siguiente bucle se escribió para realizar esta tarea:

for gen,count in gen_counts.items():

    total_count = len(generations)

    gen_percent = round(count / total_count * 100, 2)

    print(

      'generation {}: count = {:3} percentage = {}'

      .format(gen, count, gen_percent)

    )

Hagamos este bucle más eficiente moviendo un cálculo único fuera del bucle.

Este ejercicio forma parte del curso

Cómo escribir código Python eficiente

Ver curso

Instrucciones del ejercicio

  • Importa Counter del módulo collections.
  • Utiliza Counter() para recoger el recuento de cada generación de la lista generations. Guárdala como gen_counts.
  • Escribe un bucle for mejorado que mueva el cálculo único fuera del bucle (justo encima). Utiliza exactamente la misma sintaxis que en el bucle for original: copia el cálculo único, pégalo encima del bucle y elimínalo de su interior.

Ejercicio interactivo práctico

Prueba este ejercicio y completa el código de muestra.

# Import Counter
____

# Collect the count of each generation
gen_counts = ____

# Improve for loop by moving one calculation above the loop
total_count = ____

for gen,count in gen_counts.items():
    gen_percent = round(count / total_count * 100, 2)
    print('generation {}: count = {:3} percentage = {}'
          .format(gen, count, gen_percent))
Editar y ejecutar código