Статья

Python: строки: разбор для ЕГЭ

3 сентября 2026~8 минут11 класс

Пять минут на эту статью — и «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.

Как закрепить тему после разбора?

Зайди в бесплатный личный кабинет Просто Урок и реши тематическую подборку задач из банка ЕГЭ. Интерактивный тренажёр сразу проверит твои ответы и покажет верный код.

Не оставляйте тему «прочитанной»

Понимание — половина дела. Вторая половина — практика с обратной связью: личный кабинет Просто Урок покажет, где вы ошибаетесь, и подтянет слабые места.

Важно. Материалы сайта носят информационно-образовательный характер и не являются публичной офертой (ст. 437 ГК РФ), индивидуальной консультацией или руководством к действию. Мы аккуратно работаем с фактами, но не гарантируем полную точность и актуальность: структура и правила экзаменов могут меняться — сверяйтесь с официальными источниками (ФИПИ, действующие кодификаторы и нормативные акты РФ). Администрация сайта не несёт ответственности за возможные неточности и за решения, принятые на основе материалов. Заметили неточность — напишите нам, мы исправим.