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