ПочатиПочніть безкоштовно

Одноразове обчислення в циклі

До вашої сесії завантажено список цілих чисел 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))
Редагувати та запускати код