Частые ошибки при решении: подсчёт частот слов
Разберём решение и подводные камни — их обычно не видно в готовом коде из учебника.
Задача
Дан текст. Посчитать, сколько раз встречается каждое слово, и вывести слова по убыванию частоты.
Решение
from collections import Counter
def word_count(text: str) -> list[tuple[str, int]]:
words = text.lower().split()
return Counter(words).most_common()
print(word_count("a b a c b a"))
Как это работает
Текст разбивается на слова, Counter подсчитывает вхождения за линейное время, а most_common() сразу возвращает отсортированный список пар.
Пример работы
[('a', 3), ('b', 2), ('c', 1)]
Сложность
O(n) по времени по числу слов, O(k) по памяти по числу уникальных.
Частые ошибки
1. Не обрабатывать крайние случаи. Пустой ввод, ноль, отрицательные числа — именно там решение чаще всего ломается. 2. Смешивать типы данных. Строки и числа ведут себя по-разному; неявное приведение типов — источник неочевидных багов. 3. Писать код без проверки на маленьких примерах. Прогоните решение вручную на 2-3 значениях, прежде чем считать задачу решённой.
Если решение заработало с первого раза — всё равно сверьтесь со списком ошибок: половина багов рождается при доработках.