Программирование

Решение задач: счётчик слов

Превратите реальную задачу в программу шаг за шагом.

Все уроки · Уроки Python: учимся с нуля

Как подходить к задаче

Прежде чем писать код, объясните задачу простыми предложениями. Затем разбейте её на маленькие шаги и проверяйте каждый отдельно. Так большая программа становится управляемой.

  1. Что дано и что нужно? Запишите пример входа и ожидаемого выхода.
  2. Решите вручную и запишите шаги.
  3. Превратите шаги в функции.
  4. Проверьте на малых примерах, затем на граничных случаях.

Пример: счётчик слов

Задача: посчитать, сколько раз каждое слово встречается в тексте. План: привести к нижнему регистру, убрать знаки препинания, разбить на слова, посчитать в 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")

Автор: Nibras Code