Строки, срезы и строковые методы в Python для ЕГЭ/ОГЭ: шпаргалка и примеры | СмартКИМ
СмартКИМ УДОБНАЯ ПОДГОТОВКА К ЕГЭ И ОГЭ
Все разборы Решать в тренажере Войти в СмартКИМ
ЕГЭ (1–27) ОГЭ (1–15) Python: шпаргалка
Быстрый переход по номерам и темам
Базовый синтаксис Время: 5-10 мин str slices count replace find join

Строки, срезы и строковые методы

Тема: Срезы [start:stop:step], count(), find(), replace(), split(), join()
Работа со строками — ядро заданий №12 (Исполнитель Редактор), №24 (Анализ символьных строк) и №8 ЕГЭ. Знание срезов и встроенных методов заменяет сложные циклы на одну строку кода.

1. Срезы (Slices): s[start:stop:step]

Срезы позволяют извлекать любую часть строки без изменения исходной строки (строки в Python неизменяемы — immutable):

  • s[2:5] — символы с индексами 2, 3, 4 (символ с индексом stop не включается!).
  • s[:3] — первые 3 символа строки (префикс).
  • s[-3:] — последние 3 символа строки (суффикс).
  • s[::2] — каждый второй символ (с чётными индексами).
  • s[::-1] — разворот строки задом наперёд (палиндром: s == s[::-1]).

2. Главные строковые методы

Метод Описание Пример
s.count(sub) Количество непересекающихся вхождений "банан".count("ан") == 2
s.replace(old, new, 1) Замена ровно ОДНОГО первого вхождения Для Задания 12 ЕГЭ!
s.find(sub) Индекс первого вхождения (или -1) "тест".find("е") == 1
delim.join(iterable) Склеивание списка строк в одну "".join(['A','B','C']) == 'ABC'

Разновидности и прототипы задания на экзамене

1. Срезы строк (Slices): s[start:stop:step]
Извлечение подстрок, разворот строки s[::-1], шаги и отрицательные индексы.
2. Поиск и подсчет: count(), find(), startswith(), endswith()
Быстрый подсчет подстрок и определение начальных/конечных символов.
3. Замена и модификация: replace() с лимитом
Критически важно для Задания №12: s = s.replace('старое', 'новое', 1).
4. Проверка состава: isdigit(), isalpha(), isupper(), islower()
Фильтрация цифр и букв.

Боевой шаблон решения на Python

Запустить код в онлайн-песочнице
Боевой шаблон решения на Python
# === Шпаргалка: Строки и срезы на практике ===

s = "ИНФОРМАТИКА"

# 1. Примеры срезов:
print("Первые 3 буквы:", s[:3])     # ИНФ
print("Последние 4 буквы:", s[-4:])  # ТИКА
print("Разворот строки:", s[::-1])   # АКИТАМРОФНИ
print("Срез через одну:", s[::2])    # ИФРАТК

# 2. Замена с лимитом (Задание 12 ЕГЭ):
code_str = "1" * 50
while "111" in code_str:
    # ОБЯЗАТЕЛЬНО передаем 1 третьим аргументом:
    code_str = code_str.replace("111", "2", 1)

print("Результат работы редактора:", code_str)

# 3. Метод сплитов для Задания 24 ЕГЭ (поиск максимальной длины):
# Дана строка, найти макс. длину цепочки символов без буквы 'A'
test_line = "BCAABCCCDDAAB"
# Заменяем все 'A' на пробелы и разбиваем на куски:
chunks = test_line.replace('A', ' ').split()
max_len = max(len(c) for c in chunks)
print("Макс. длина без буквы A:", max_len)

Типичные ошибки

✕ Не так
# ❌ Ошибка в Задании 12: Забыть лимит в replace()
s = s.replace('11', '2') # Заменит ВСЕ вхождения сразу, нарушив алгоритм!
✓ Так
# ✅ Правильно: Всегда передавать единицу третьим аргументом:
s = s.replace('11', '2', 1)
✕ Не так
# ❌ Ошибка: Попытка изменить символ строки по индексу
s = 'hello' s[0] = 'H' # TypeError: 'str' object does not support item assignment
✓ Так
# ✅ Правильно: Создать новую строку через срез:
s = 'H' + s[1:]
ГРОБ

ЛОВУШКА: Пересекающиеся подстроки в .count()

'XXXX'.count('XX') вернёт 2, а не 3, потому что count() не учитывает пересекающиеся вхождения.

Как обойти
Для поиска пересекающихся вхождений используйте цикл со сдвигом: sum(1 for i in range(len(s)-1) if s[i:i+2] == 'XX') или регулярные выражения с Lookahead (?=...).

Лайфхаки на экзамене

  1. Проверка на палиндром в 1 строку: if s == s[::-1]: ...
  2. Для подсчета гласных замените их на маркер *: sum(s.count(v) for v in 'AEIOU').
  3. Метод .isdigit() моментально проверяет, состоит ли строка целиком из цифр.
Все разборы заданий Открыть в тренажере СмартКИМ