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.
Para realizar esta tarea se escribió el bucle siguiente:
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
Escribir código Python eficiente
Instrucciones del ejercicio
- Importa
Counterdel módulocollections. - Utiliza
Counter()para recoger el recuento de cada generación de la listagenerations. Guárdalo comogen_counts. - Escribe un bucle for mejor que coloque un cálculo único fuera (encima) del bucle. Utiliza exactamente la misma sintaxis que en el bucle for original (simplemente copia y pega el cálculo único encima del bucle).
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))