Python: строки: разбор для ЕГЭ
Пять минут на эту статью — и «Python: строки» перестанет пугать. Внутри: теория без воды, рабочий алгоритм, разбор типового задания и список частых ошибок.
Основы работы со строками: индексы и неизменяемость
Строки встречаются почти в половине задач компьютерного ЕГЭ по информатике — от простого поиска в 12 номере до сложных алгоритмов в 24 и 25 заданиях. В этом разборе мы разложим по полочкам синтаксис, индексы, методы и типичные ловушки экзамена, чтобы ты уверенно забирал баллы на строковых задачах.
Строка в Python — это упорядоченная последовательность символов, заключённая в одинарные или двойные кавычки. Главное свойство, о котором часто забывают на экзамене: строки в Python неизменяемы (immutable). Это значит, что нельзя напрямую заменить отдельный символ по индексу, вызвав конструкцию s[0] = "A". Любая операция модификации создаёт совершенно новую строку в памяти компьютера.
Каждый символ имеет свой порядковый номер. Нумерация начинается с нуля при движении слева направо. Если нужно обратиться к символу с конца, используют отрицательную индексацию: последний элемент имеет индекс -1, предпоследний — -2 и так далее.
s = "ИНФОРМАТИКА"
print(s[0]) # Выведет: И
print(s[4]) # Выведет: Р
print(s[-1]) # Выведет: А
print(len(s)) # Длина строки: 11
Для быстрой проверки понимания базового синтаксиса открой бесплатный тренажёр в личном кабинете Просто Урок и реши пару вводных примеров.
Срезы строк: извлекаем подстроки без ошибок
Срез (slice) позволяет вырезать любую часть строки без использования циклов. Синтаксис среза выглядит так: строка[старт:стоп:шаг]. Параметр «старт» указывает индекс начала среза, «стоп» — индекс окончания (при этом сам символ с индексом «стоп» не включается), а «шаг» задаёт шаг обхода.
Если параметры не указаны, Python подставляет значения по умолчанию: старт равен началу строки, стоп — концу, а шаг равен единице. Отрицательный шаг позволяет перебирать символы в обратном порядке.
text = "ПРОГРАММИРОВАНИЕ"
print(text[0:4]) # ПРОГ (символ с индексом 4 не включается)
print(text[4:10]) # РАММИР
print(text[::2]) # ПОРАМИОАИ (каждый второй символ)
print(text[::-1]) # ЕИНАВОРИММАРГОРП (разворот строки)
Правая граница среза никогда не входит в результат. Запись s[2:5] вернёт символы с индексами 2, 3 и 4. Символ с индексом 5 взят не будет. Если забыть про нестрогую правую границу, можно потерять символ в 24 задании.
Основные строковые методы для экзамена
Методы строк вызывают через точку после имени переменной. Важно помнить: метод не меняет исходную переменную, а возвращает новый результат, который нужно сохранить в переменную или сразу вывести на экран.
Ниже собраны методы, которые чаще всего требуются для решения заданий компьютерного ЕГЭ:
| Метод | Что делает | Пример | Результат |
|---|---|---|---|
count(sub) |
Считает количество непересекающихся вхождений подстроки | "АБРАКАДАБРА".count("А") |
5 |
find(sub) |
Возвращает индекс первого вхождения (или -1, если не найдено) | "ЕГЭ-2025".find("20") |
4 |
replace(old, new, n) |
Заменяет старую подстроку на новую не более n раз | "1111".replace("11", "2", 1) |
"211" |
split(sep) |
Разбивает строку на список по заданному разделителю | "А Б В".split() |
['А', 'Б', 'В'] |
isdigit() |
Проверяет, состоит ли строка только из цифр | "123a".isdigit() |
False |
Отработать применение этих методов на типовых тестах ЕГЭ можно в практическом модуле Просто Урок.
Разбор типового задания №12: алгоритм для Исполнителя Редактор
Задание 12 проверяет умение моделировать работу алгоритма преобразования строк. В условии даётся строка (например, состоящая из единиц и двоек) и цикл с командами «нашлось» и «заменить». В Python команда «нашлось» реализуется через оператор in, а «заменить» — через метод replace() с обязательным третьим аргументом 1.
Рассмотрим типовую задачу: исходная строка содержит 70 единиц. К ней применяется алгоритм:
ПОКА нашлось (111) ИЛИ нашлось (222)
ЕСЛИ нашлось (111) ТО заменить (111, 2)
ИНАЧЕ заменить (222, 1)
КОНЕЦ ПОКА
Решим задачу на Python по шагам:
# Шаг 1: Формируем начальную строку
s = "1" * 70
# Шаг 2: Запускаем цикл проверки условий
while "111" in s or "222" in s:
if "111" in s:
# Шаг 3: Меняем строго первое вхождение слева
s = s.replace("111", "2", 1)
else:
s = s.replace("222", "1", 1)
# Шаг 4: Выводим итоговую строку
print(s) # Результат: 22
Всегда указывай единицу третьим аргументом в replace(old, new, 1). Без неё Python заменит сразу все вхождения по всей строке, что нарушит пошаговую логику Исполнителя и приведёт к неверному ответу.
Подводные камни в задании №24: поиск цепочек символов
Задание 24 требует обработать текстовый файл длиной в миллионы символов. Обычный срез или многократный вызов метода replace() на огромной строке может выполняться слишком долго. Чтобы программа работала за доли секунды, применяют динамический подсчёт в одном цикле или метод split().
Например, требуется найти длину самой длинной непрерывной последовательности символов 'C' в файле. Самое быстрое и надёжное решение — разбить строку по всем остальным символам или пройти строку одним циклом, накапливая счётчик длины.
# Быстрое решение через split
with open("24.txt") as f:
\( data = f.read() \)
# Заменяем посторонние символы на пробелы, если их немного
for ch in "ABDF":
data = data.replace(ch, " ")
# Находим максимальную длину цепочки
\( max_len = max(len(chunk) for chunk in data.split()) \)
print(max_len)
Если символов в файле много, лучше использовать стандартный перебор символов с двумя переменными: текущая длина цепочки и максимальная длина. Это гарантирует мгновенную работу даже на слабых станциях в пункте проведения экзамена.
Что запомнить: чек-лист по строкам
Перед экзаменом убедись, что ты уверенно владеешь базой строковых операций:
1. Строки неизменяемы: результат работы любого метода или среза нужно присваивать переменной.
2. В срезах s[a:b] правая граница b никогда не включается в выборку.
3. В 12 задании обязательно пиши s.replace(old, new, 1) для замены ровно одного вхождения.
4. Метод find() возвращает -1 при отсутствии подстроки, а index() вызовет ошибку программы.
5. Для чтения файла в 24 задании используй open("24.txt").read().
Сделай следующий шаг прямо сейчас: перейди в личный кабинет Просто Урок и реши 5 тренировочных задач на строки, чтобы закрепить теорию на практике.
Частые вопросы
Чем метод find() отличается от index()?
Метод find() возвращает индекс первого вхождения подстроки или -1, если подстрока не найдена. Метод index() при отсутствии подстроки аварийно завершает программу с ошибкой ValueError.
Почему s.replace() не изменяет саму переменную s?
Строки в Python неизменяемы, поэтому replace() создаёт новую строку в памяти. Чтобы сохранить изменения, напиши s = s.replace(...).
Как быстро перевернуть строку в коде?
Используй срез с отрицательным шагом: s[::-1]. Это самый быстрый и лаконичный способ разворота строки в Python.
Как закрепить тему после разбора?
Зайди в бесплатный личный кабинет Просто Урок и реши тематическую подборку задач из банка ЕГЭ. Интерактивный тренажёр сразу проверит твои ответы и покажет верный код.
Не оставляйте тему «прочитанной»
Понимание — половина дела. Вторая половина — практика с обратной связью: личный кабинет Просто Урок покажет, где вы ошибаетесь, и подтянет слабые места.