Множества
Базовые задачи
- Дана строка. Вернуть множество из всех его символов.
- Дана строка и множество символов. Удалите из строки все символы из множества. Например, если дана строка
"hello world"
и множество{'h', 'l', 'x'}
, вы должны вернуть строку"eo word"
. Потому что символы'h'
и'l'
удаляются.- Алгоритм решения. Перебирайте все символы строки; создайте список, заполненный символами, которых нет в множестве;
превратите список обратно в строку с помощью функции
join
.
- Алгоритм решения. Перебирайте все символы строки; создайте список, заполненный символами, которых нет в множестве;
превратите список обратно в строку с помощью функции
- Дана строка, содержащая текст. Вернуть список из всех его слов. Слово — это последовательность
из непробельных символов, в которых в начале и конце нет знаков препинания. Но они могут быть внутри слова, например, «сине-зеленый».
Алгоритм:
- Чтобы получить все знаки препинания, напишите в начале файла
import string
и используйте константуstring.punctuation
. Это строка, содержащая все знаки препинания. - Используйте функцию
.strip
, которая удаляет указанные символы из начала и конца строки.
- Чтобы получить все знаки препинания, напишите в начале файла
-
- Даны две строки, каждая содержит текст. Вернуть множество слов, которые встречаются и в первом, и во втором предложении. Используйте предыдущую задачу для разделения текста на слова.
- Аналогично, но нужно искать совпадения слов, игнорируя регистр.
Проверка орфографии
Загрузите файл со списком английских слов, но пока не трогайте его: english_words.zip. А еще найдите какой-нибудь длинный английский текст, например, скопируйте его с любимого сайта.
- Дано имя файла с орфографическим словарем, фактически, вам будет дан загруженный ранее файл
words_alpha
. Он состоит только из орфографически корректных слов. Они сразу же даны в нижнем регистре, их не нужно преобразовывать. Верните множество слов из этого файла. - Дано два имени файла. Файл со словарем, файл с текстом. Прочитайте из первого файла словарь с помощью предыдущей задачи. Прочитайте из второго файла список всех слов. Для этого вы тоже решали задачу выше. Распечатайте на экране все слова, которые не нашлись в орфографическом словаре. При проверке слова приводите его к нижнему регистру, но распечатывать неправильное слово надо в исходной форме, без приведения к нижнему регистру.
-
Исправьте предыдущую задачу, чтобы в нее передавалось имя еще одного файла для вывода результата. Сделайте так, чтобы при распечатке слова на экран оно точно так же печаталось бы в файл. Соответственно, на экране и в файле с результатом должно быть распечатано одно и то же, с точностью до символа.
Теперь будем пытаться исправлять ошибки
- Дано слово, верните множество слов, которые получаются из исходного удалением одной из букв. Например, слово
ccat
должно превратиться в множество{'cat', 'cct', 'cca'}
. - Дано слово, верните множество слов, которые получаются из исходного слова дописыванием одной буквы.
Например, слово
at
должно превратиться в множество{'aat', 'bat', 'cat', 'dat', ... , 'abt', 'act', 'adt', 'aet', ..., 'ata', 'atb', atc', ...}
. Чтобы это сделать, убедитесь, что в начале файла написаноimport string
, после чего вам становится доступна константаstring.ascii_lowercase
, в которой находятся все буквы, и вы можете перебрать эти буквы в цикле. - Дано слово, верните множество слов, которые получаются из исходного слова перестановкой двух соседних букв. Например, слово
hello
должно превратиться в множество{'ehllo', 'hlelo', 'hello', 'helol'}
. - Дано слово, и множество слов, являющееся орфографическим словарем. Верните множество слов, которые, во-первых, находятся в одном из множеств из трех предыдущих пунктов, а во-вторых, находятся в орфографическом словаре.
- Решите задачу 2 или 3 про проверку орфографии, но со следующим исправлением: в файл и на экран выводятся все слова из исходного текста, по слову на отдельной строке. Но если слова нет в орфографическом словаре, то перед ним выводится восклицательный знак, а после него в строке выводятся все варианты замены этого слова на правильные.