Строки и работа с текстом: подготовка к ЕГЭ по информатике
Тема 'Строки и работа с текстом' — одна из ключевых в ЕГЭ по информатике. Она встречается как в заданиях на программирование (например, №24, №25), так и в теоретических вопросах. Умение обрабатывать строки необходимо для решения задач на анализ текста, поиск подстрок, замену символов и работу с регулярными выражениями.
В этой статье мы систематизируем знания по теме: разберём индексацию и срезы, основные методы строк, подсчёт символов и регулярные выражения. Каждый раздел сопровождается примерами задач уровня ЕГЭ с полным решением.
Материал рассчитан на учеников 10-11 классов, которые готовятся к экзамену. Если вы только начинаете изучение Python, рекомендую сначала освоить базовые типы данных и циклы.
Без карты, без кредитки. Выбери персонажа — учи голосом, побеждай в баттлах.
Индексация и срезы строк
В Python строки — это упорядоченные последовательности символов. Каждый символ имеет индекс: положительный (начиная с 0 слева) и отрицательный (начиная с -1 справа). Срезы позволяют извлекать подстроки: s[start:stop:step].
Важно помнить: при срезе элемент с индексом stop не включается. Если step отрицательный, строка обходится справа налево. Эти операции активно используются в задачах ЕГЭ, особенно при анализе текстовых данных.
Дана строка s = 'abcdef'. Требуется получить подстроку 'cde' с помощью среза. Запишите срез.
Шаг 1: Определяем индексы. Символ 'c' имеет индекс 2, 'd' — 3, 'e' — 4. Нужно включить символы с индекса 2 по 4 включительно. Шаг 2: Записываем срез s[2:5] (stop=5, так как элемент с индексом 5 не включается). Результат: 'cde'.
Дана строка s = '123456789'. Получите подстроку '97531' с помощью среза с отрицательным шагом.
Шаг 1: Нужны символы с индексами 8,6,4,2,0 (если считать с нуля). Шаг 2: Срез с начала до конца с шагом -2: s[::-2]. Проверка: s[8]='9', s[6]='7', s[4]='5', s[2]='3', s[0]='1'. Результат: '97531'.
Методы строк: split, join, replace, upper, lower
Методы строк — это встроенные функции, которые позволяют преобразовывать и анализировать текст. На ЕГЭ чаще всего используются:
- split(sep) — разбивает строку по разделителю и возвращает список.
- join(iterable) — объединяет элементы списка в строку с заданным разделителем.
- replace(old, new) — заменяет все вхождения подстроки old на new.
- upper() и lower() — преобразуют строку к верхнему или нижнему регистру.
Эти методы экономят время и упрощают код. Важно не путать split и join: split создаёт список из строки, join — наоборот.
Дана строка s = 'один, два, три, четыре'. Получите строку 'один-два-три-четыре' (замените запятые на дефисы, уберите пробелы).
Шаг 1: Используем replace для замены запятых на дефисы: s = s.replace(', ', '-'). Шаг 2: Проверяем результат: 'один-два-три-четыре'. Альтернативное решение: split по ', ', затем join с '-': '-'.join(s.split(', ')).
В строке s = 'Hello World! How are you?' подсчитайте количество слов (слова разделены пробелами).
Шаг 1: Используем split() без аргументов — разбивает по любым пробельным символам. Получаем список слов: ['Hello', 'World!', 'How', 'are', 'you?'] Шаг 2: Длина списка — количество слов: len(s.split()). Ответ: 5.
Подсчёт символов и анализ текста
Часто в задачах ЕГЭ требуется подсчитать количество определённых символов, букв или цифр в строке. Для этого используются циклы, метод count() или условные конструкции.
Метод count(sub) возвращает количество непересекающихся вхождений подстроки sub. Также можно использовать генераторы списков или Counter из модуля collections.
Примеры: найти самую частую букву, проверить, является ли строка палиндромом, удалить все цифры из строки.
Дана строка s = 'abracadabra'. Найдите символ, который встречается чаще всего. Если таких несколько, выведите любой.
Шаг 1: Создаём словарь для подсчёта. Проходим по каждому символу: for ch in s: count[ch] = count.get(ch, 0) + 1. Шаг 2: Находим максимум: max(count, key=count.get). Результат: 'a' (встречается 5 раз). Можно также использовать Counter: from collections import Counter; Counter(s).most_common(1)[0][0].
Проверьте, является ли строка s = 'А роза упала на лапу Азора' палиндромом (без учёта пробелов и регистра).
Шаг 1: Удаляем пробелы и приводим к нижнему регистру: cleaned = s.replace(' ', '').lower(). Шаг 2: Сравниваем строку с её перевёрнутой версией: cleaned == cleaned[::-1]. Результат: True (строка является палиндромом).
Регулярные выражения (базовый уровень)
Регулярные выражения — мощный инструмент для поиска и замены текста по шаблону. В ЕГЭ они могут использоваться в заданиях на обработку текстовых файлов. Модуль re в Python позволяет работать с регулярками.
Основные функции: re.search(), re.findall(), re.sub(). Символы: . (любой символ), * (0 или более), + (1 или более), ? (0 или 1), \d (цифра), \w (буква, цифра, подчёркивание), [] (набор символов).
Важно: не пытайтесь выучить все возможности — достаточно базовых шаблонов для типовых задач ЕГЭ.
Из строки s = 'Цена: 1500 руб., скидка 10%' извлеките все числа (целые).
Шаг 1: Импортируем re. Шаг 2: Используем re.findall(r'\d+', s). Шаг 3: Получаем список ['1500', '10']. Если нужно целыми числами, преобразуем: list(map(int, result)).
В строке s = 'email: test@example.com, phone: +7-123-456-78-90' найдите email-адрес.
Шаг 1: Шаблон для email: r'[\w.]+@[\w.]+'. Шаг 2: re.search(r'[\w.]+@[\w.]+', s).group() -> 'test@example.com'. Важно: простой шаблон не учитывает все возможные домены, но для ЕГЭ достаточно.
Типичные ошибки и советы по подготовке
На ЕГЭ по информатике часто допускают следующие ошибки при работе со строками:
- Забывают, что строки неизменяемы (immutable). Методы строк возвращают новую строку, не изменяя исходную.
- Путают split и join, особенно при работе с разделителями.
- Не учитывают регистр при сравнении строк.
- Ошибаются в индексах срезов, особенно с отрицательными индексами.
Советы:
- Регулярно решайте задачи №24 (обработка строк) и №25 (поиск подстрок).
- Используйте встроенные методы строк — они оптимизированы и читаемы.
- Для сложных шаблонов применяйте регулярные выражения, но не злоупотребляйте.
- Если тема вызывает трудности, попробуйте разобрать её с AI-репетитором, например, Наставником, который объяснит тему в диалоге и даст практические задания.
Частые вопросы
Без карты, без кредитки. Выбери персонажа — учи голосом, побеждай в баттлах.