IniziaInizia gratis

Ciclo con calcolo una tantum

Nella tua sessione è stata caricata una lista di interi che rappresenta la generazione di ciascun Pokémon, chiamata generations. Vuoi raccogliere i conteggi di ogni generazione e determinare quale percentuale ciascuna generazione rappresenta sul numero totale di interi.

Il ciclo seguente è stato scritto per svolgere questo compito:

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)
    )

Rendiamo questo ciclo più efficiente spostando un calcolo da eseguire una sola volta fuori dal ciclo.

Questo esercizio fa parte del corso

Scrivere codice Python efficiente

Visualizza il corso

Istruzioni dell'esercizio

  • Importa Counter dal modulo collections.
  • Usa Counter() per raccogliere il conteggio di ciascuna generazione dalla lista generations. Salvalo come gen_counts.
  • Scrivi un ciclo for migliore che collochi un calcolo una tantum fuori (sopra) il ciclo. Usa esattamente la stessa sintassi del ciclo for originale (puoi semplicemente copiare e incollare il calcolo una tantum sopra il ciclo).

Esercizio pratico interattivo

Prova a risolvere questo esercizio completando il codice di esempio.

# 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))
Modifica ed esegui il codice