Aan de slagGa gratis aan de slag

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

Cursus bekijken

Oefeninstructies

  • Importeer Counter uit de module collections.
  • Gebruik Counter() om het aantal per generatie te verzamelen uit de lijst generations. Sla dit op als gen_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))
Code bewerken en uitvoeren