Engångsberäkning i slinga
En lista med heltal som representerar varje Pokémons generation har laddats in i din session och kallas generations. Du vill räkna förekomsterna av varje generation och beräkna hur stor procentandel varje generation utgör av det totala antalet heltal.
Nedan visas en slinga som skrivits för att lösa denna uppgift:
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)
)
Låt oss göra slingan mer effektiv genom att flytta en engångsberäkning utanför den.
Den här övningen är en del av kursen
Att skriva effektiv Python-kod
Övningsinstruktioner
- Importera
Counterfrån modulencollections. - Använd
Counter()för att räkna förekomsterna av varje generation från listangenerations. Spara resultatet somgen_counts. - Skriv en förbättrad for-slinga där du placerar en engångs-beräkning utanför (ovanför) slingan. Använd exakt samma syntax som i den ursprungliga for-slingan (kopiera och klistra helt enkelt in engångsberäkningen ovanför slingan).
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# 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))