ComeçarComece gratuitamente

Loop de cálculo único

Uma lista de números inteiros que representa a geração de cada Pokémon foi carregada em sua sessão chamada generations. Você gostaria de reunir as contagens de cada geração e determinar a porcentagem que cada geração representa em relação à contagem total de números inteiros.

O loop abaixo foi escrito para realizar essa tarefa:

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)

    )

Vamos tornar esse loop mais eficiente movendo um cálculo único para fora do loop.

Este exercício faz parte do curso

Como escrever um código Python eficiente

Ver Curso

Instruções de exercício

  • Importe Counter do módulo collections.
  • Use Counter() para coletar a contagem de cada geração da lista generations. Salve o resultado como gen_counts.
  • Escreva um loop for melhor que coloque um cálculo único fora (acima) do loop. Use exatamente a mesma sintaxe do loop for original (basta copiar e colar o cálculo único acima do loop).

Exercício interativo prático

Experimente este exercício preenchendo este código de exemplo.

# 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))
Editar e executar código