Inizia subitoInizia 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 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 interattivo pratico

Prova questo esercizio completando questo 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