Boucle avec calcul effectué une seule fois
Une liste d'entiers représentant la génération de chaque Pokémon a été chargée dans votre session sous le nom generations. Vous voulez obtenir le nombre d'occurrences de chaque génération et calculer le pourcentage que chaque génération représente par rapport au nombre total d'entiers.
La boucle ci-dessous a été écrite pour accomplir cette tâche :
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)
)
Rendons cette boucle plus efficace en déplaçant un calcul effectué une seule fois à l'extérieur de la boucle.
Cette activité fait partie du cours
Rédiger du code Python efficace
Instructions de l’exercice
- Importez
Counterdu modulecollections. - Utilisez
Counter()pour compter chaque génération dans la listegenerations. Enregistrez le résultat dansgen_counts. - Écrivez une meilleure boucle for qui place un calcul effectué une seule fois à l'extérieur (au-dessus) de la boucle. Utilisez exactement la même syntaxe que la boucle for originale (copiez-collez simplement le calcul effectué une seule fois au-dessus de la boucle).
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
# 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))