Buclă cu calcul unic
O listă de numere întregi care reprezintă generația fiecărui Pokémon a fost încărcată în sesiunea ta sub numele generations. Vrei să aduni numărul de apariții al fiecărei generații și să determini ce procent reprezintă fiecare generație din totalul de elemente.
Bucla de mai jos a fost scrisă pentru a îndeplini această sarcină:
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)
)
Hai să facem această buclă mai eficientă, mutând calculul unic în afara buclei.
Acest exercițiu face parte din cursul
Scriere eficientă a codului Python
Instrucțiuni pentru exercițiu
- Importă
Counterdin modululcollections. - Folosește
Counter()pentru a număra apariția fiecărei generații din listagenerations. Salvează rezultatul cagen_counts. - Scrie o buclă
formai bună, care plasează un calcul unic în afara (deasupra) buclei. Folosește exact aceeași sintaxă ca în bucla originală (copiază și lipește pur și simplu calculul unic deasupra buclei).
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
# 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))