Решение задач: счётчик слов
Превратите реальную задачу в программу шаг за шагом.
Все уроки · Уроки Python: учимся с нуля
Как подходить к задаче
Прежде чем писать код, объясните задачу простыми предложениями. Затем разбейте её на маленькие шаги и проверяйте каждый отдельно. Так большая программа становится управляемой.
- Что дано и что нужно? Запишите пример входа и ожидаемого выхода.
- Решите вручную и запишите шаги.
- Превратите шаги в функции.
- Проверьте на малых примерах, затем на граничных случаях.
Пример: счётчик слов
Задача: посчитать, сколько раз каждое слово встречается в тексте. План: привести к нижнему регистру, убрать знаки препинания, разбить на слова, посчитать в dict, показать самые частые.
def clean(text):
keep = "abcdefghijklmnopqrstuvwxyz əöüğışç"
return "".join(ch for ch in text.lower() if ch in keep)
def count_words(text):
counts = {}
for word in clean(text).split():
counts[word] = counts.get(word, 0) + 1
return counts
def top(counts, n=3):
return sorted(counts.items(), key=lambda p: p[1], reverse=True)[:n]
sample = "The cat and the dog. The end!"
print(top(count_words(sample))) # [('the', 3), ('cat', 1), ('and', 1)]Каждая функция делает одно дело и проверяется отдельно. Дальше программу легко расширять: читать из файла, сохранять результат, пропускать слишком короткие слова.
Поиск ошибок
Если программа ведёт себя неожиданно, выводите промежуточные значения и ищите место, где реальность расходится с ожиданием. Небольшие проверки assert защитят вас при последующих правках.
assert count_words("a a b") == {"a": 2, "b": 1}
assert top({"x": 1, "y": 5}, 1) == [("y", 5)]
print("all checks passed")