Einmalige Berechnungen in Schleifen
Eine Liste von ganzen Zahlen, welche die Generation jedes Pokémon repräsentieren, wurde in deine Session mit dem Namen generations geladen. Du möchtest die Anzahl jeder Generation sammeln und herausfinden, wie viel Prozent jede Generation von der Gesamtanzahl ausmacht.
Die folgende Schleife wurde geschrieben, um diese Aufgabe zu erledigen:
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)
)
Lass uns diese Schleife effizienter machen, indem wir eine einmalige Berechnung außerhalb der Schleife durchführen.
Diese Übung ist Teil des Kurses
Effizienten Python-Code schreiben
Anleitung zur Übung
- Importiere
Counteraus dem Modulcollections. - Benutze
Counter(), um die Anzahl jeder Generation aus der Listegenerationszu ermitteln. Speichere die Werte alsgen_counts. - Schreibe eine bessere for-Schleife, die eine einmalige Berechnung außerhalb (über) der Schleife macht. Benutze genau die gleiche Syntax wie bei der ursprünglichen for-Schleife (kopiere einfach die einmalige Berechnung und füge sie über der Schleife ein).
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
# 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))