Eénmalige berekening uit de lus
Een lijst met gehele getallen die de generatie van elke Pokémon weergeeft, is in je sessie geladen als generations. Je wilt het aantal per generatie verzamelen en bepalen welk percentage elke generatie vormt van het totale aantal getallen.
De onderstaande lus is hiervoor geschreven:
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)
)
Laten we deze lus efficiënter maken door een éénmalige berekening buiten de lus te plaatsen.
Deze oefening maakt deel uit van de cursus
Efficiënte Python-code schrijven
Oefeninstructies
- Importeer
Counteruit de modulecollections. - Gebruik
Counter()om het aantal per generatie te verzamelen uit de lijstgenerations. Sla dit op alsgen_counts. - Schrijf een betere for-lus die een éénmalige berekening buiten (boven) de lus plaatst. Gebruik exact dezelfde syntaxis als de oorspronkelijke for-lus (kopieer en plak de éénmalige berekening simpelweg boven de lus).
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
# 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))