Задачи: Файлы, множества, словари

Файлы

  1. Дан текстовый файл. Посчитать и вывести на экран такую информацию:
     количество строк: ...
     количество слов: ...
     средняя длина слова: ... (округлив до 2 знаков после запятой)
    

    Под словом понимается последовательность непробельных символов, поэтому используйте функцию split для разделения текста на слова. Дополнительная обработка, в частности, убирание знаков препинаня, не нужна.

  2. Еще будут …………

Множества

  1. Дана строка. Вернуть множество из всех его символов.
  2. Дана строка (предложение). Вернуть множество из всех его слов (слова — это последовательность из непробельных символов).
  3. Даны две строки (два предложения). Вернуть множество слов, которые встречаются и в первом, и во втором предложении.
    • ищите совпадения слов, игнорируя регистр.

Проверка орфографии

Загрузите файл со списком английских слов, но пока не трогайте его: english_words.zip. А еще найдите (например, на сайте lib.ru) какой-нибудь длинный английский текст.

  1. Дано множество строк (орфографический словарь), это слова, которые мы будем считать орфографически правильными. Считаем, что эти слова все указаны в нижнем регистре. И дан список слов, которые надо проверить. Верните список слов, которые не нашлись в словаре. Например, orpho_check({'a', 'b', 'c'}, ['a', 'bb', 'c', 'cc', 'bb'] должно вернуть ['bb', 'cc', 'bb].
  2. Дана строка, это текст на английском. Верните список слов в этом тексте. Используйте split без аргументов, чтобы разбить текст на слова по пробелам, переводам строк и другим пробельным символам, а потом используйте strip, чтобы удалить все знаки препинания из конца и начала каждого слова. Эту функцию назовите tokenize.
  3. Дано имя файла, это файл с орфографическим словарем. Верните список слов в этом файле. Каждое слово находится в отдельной строке. Убедитесь, что в списке у слов из словаря нет на конце символов переводра строк, и что все слова приведены к нижнему регистру. Назовите функцию read_orpho_dict.
  4. Дано имя файла, прочитайте из него весь текст и верните список слов этого текста. Пользуйтесь уже реализованными функциями. Эту функцию назовите tokenize_file.
  5. Дано три имени файла. Имя файла со словарем, имя файла с текстом, имя файла для вывода результата. Прочитайте из первого файла словрь, из второго — слова. Распечатайте на экране все слова, которые не нашлись в орфографическом словаре, и выведите их же в файл с результатом. Т.е. на экране и в файле с результатом должен быть один и тот же список слов.

    Теперь будем пытаться исправлять ошибки

  6. Дано слово, верните множество слов, которые получаются из исходного удалением одной из букв. Например, слово ccat должно превратиться в множество {'cat', 'cct', 'cca'}.
  7. Дано слово, верните множество слов, которые получаются из исходного слова дописыванием одной буквы. Например, слово at должно превратиться в множество {'aat', 'bat', 'cat', 'dat', ... , 'abt', 'act', 'adt', 'aet', ..., 'ata', 'atb', atc', ...}. Чтобы это сделать, напишите в начале файла from string import ascii_lowercase, после чего вам становится доступна переменная ascii_lowercase, в которой находятся все буквы, и вы можете перебрать эти буквы в цикле.
  8. Дано слово, верните можество слов, которые получаются из исходного слова перестановкой двух соседних букв. Например, слово hello должно превратиться в множество {'ehllo', 'hlelo, ‘hello, 'jelol'}.
  9. Дано слово, и множество слов, являющееся орфографическим словарем. Верните множство слов, которые, во-первых, находятся в одном из множеств из трех предыдущих пунктов, а во-вторых, находятся в орфгорафическом словаре.
  10. Переделайте задачу 6 (дано три имени файла…) так: в файл и на экран выводятся все слова из исходного текста, по слову на отдельной строке. Но если слова нет в орфографическом словаре, то перед ним выводится восклицательный знак, а после него в строке выводятся все варианты замены этого слова на правильные.

Словари

  1. Дан словарь, который сопоставляет некоторым символам некоторые строки. Например, {'a': 'xyz', 'b': '123'}. Кроме того, дана строка. Замените каждый символ строки на то, что указано для него в словаре, либо оставьте его, каким он был. Например, 'abc' должно замениться на 'xyz123c'. Попробуйте решить не очень длинно, как-нибудь через list comprehension.
  2. Дана строка, верните словарь, в котором для каждого символа строки указано, сколько раз он встретился в строке. Например, banana должно превратиться в {‘b’: 1, ‘a’: 3, ‘n’: 2}
  3. Дан текст, верните словарь, в котором для каждого слова текста (используйте реализованную вами ранее функцию tokenize) указано, сколько раз оно встретилось в тексте.
  4. Дано два имени файла. Из первого файла прочитайте текст, приведите его к нижнему регистру, и с помощью предущей функции получите частотный словрь слов. Выведите этот словарь во второй файл следующим образом. Кодировку используйте cp1251, в каждой строке пишите сначла слово, потом точку с запятой, потом частоту. Например

     кот;10
     коза;20
     кабан;5
    

    Если у выходного файла будет расширение csv, его можно будет открыть в Excel.