НачатьНачать бесплатно

Цикл с однократным вычислением

В вашу сессию загружен список целых чисел generations, где каждое число обозначает поколение покемона. Вам нужно подсчитать количество покемонов каждого поколения и определить, какую долю (в процентах) каждое поколение составляет от общего числа.

Для этого был написан следующий цикл:

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

Сделаем этот цикл эффективнее — вынесем однократное вычисление за его пределы.

Это упражнение является частью курса

Эффективный код на Python

Посмотреть курс

Инструкции к упражнению

  • Импортируйте Counter из модуля collections.
  • С помощью Counter() подсчитайте количество покемонов каждого поколения из списка generations. Сохраните результат в переменную gen_counts.
  • Перепишите цикл for так, чтобы однократное вычисление было вынесено за его пределы (выше цикла). Используйте точно такой же синтаксис, что и в исходном цикле (просто скопируйте однократное вычисление и вставьте его перед циклом).

Интерактивное практическое упражнение

Попробуйте выполнить это упражнение, дополнив этот пример кода.

# 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))
Редактировать и запускать код