Код БарсикОсновы Python
Основы Python›C13 · Теория

Теория · C13

Строки и обработка текста

Разберись в теме, запусти пример и переходи к самостоятельным задачам.

РАЗБИРАЕМ ПО ШАГАМ

От идеи к работающему коду

Строка — упорядоченная последовательность символов. Научимся выделять фрагменты, очищать ввод и собирать текст. Затем проверим палиндром: фразу, которая одинаково читается в обе стороны после согласованной очистки.

Сразу к запуску примера ↓
Барсик разбирает текст на фрагменты и собирает новое сообщение.
Барсик разбирает текст на фрагменты и собирает новое сообщение.
  1. 1Исходный текст
  2. 2Нормализация и срезы
  3. 3Проверка или сборка

1. Символы, длина и срезы

Индексы строки работают как у списка. Срез text[start:stop:step] возвращает фрагмент; правая граница не включается. Запись [::-1] создаёт строку в обратном порядке.

Строки неизменяемы: присвоить text[0] новое значение нельзя. Методы и срезы возвращают новые строки. До обращения text[0] проверь, что текст не пуст.

Python
text = "Python"print(len(text))print(text[:2])print(text[::-1])if text:    print(text[0])

2. Очищаем и нормализуем ввод

strip убирает пробельные символы по краям, но не внутри строки. lower переводит буквы в нижний регистр, upper — в верхний. casefold предназначен для сравнения без учёта регистра и учитывает дополнительные особенности Unicode.

Русские буквы поддерживаются обычными строками Python. islower и isupper проверяют регистр букв; строка из одних цифр не считается ни строчной, ни прописной. len считает кодовые точки Unicode, что не всегда совпадает с числом видимых значков, например у составных эмодзи.

Python
text = "  Привет, Барсик!  "clean = text.strip().casefold()print(clean)print("Привет".upper())print("123".islower())

3. Разделяем и собираем

split() без аргумента делит строку по пробельным разделителям и не создаёт пустые слова из повторных пробелов. join соединяет строки выбранным разделителем. replace возвращает текст с заменами.

Для инициалов сначала получи слова, проверь их количество и только затем бери первые буквы. Разность длин двух строк может быть отрицательной; abs возвращает её величину без знака.

Python
name = "Анна   Смирнова"parts = name.split()if len(parts) == 2:    initials = parts[0][0] + ". " + parts[1][0] + "."    print(initials)print(" / ".join(parts))print(abs(len("кот") - len("Барсик")))

4. Правило палиндрома

Сначала определяем правила сравнения: игнорируем регистр и все символы, кроме букв и цифр. isalnum проверяет это условие. По очереди добавляем подходящие символы в новую строку.

После очистки сравниваем строку с её обратной версией. Для пустого результата отдельно выводим «Нет символов для проверки»: не выдаём успех для строки из одних знаков препинания.

Python
text = "А роза упала на лапу Азора!"clean = ""for char in text.casefold():    if char.isalnum():        clean += charif not clean:    print("Нет символов для проверки")else:    print(clean == clean[::-1])

Где легко ошибиться

  • Ожидать, что strip удалит пробелы внутри фразы.
  • Забыть сохранить результат replace или lower.
  • Обращаться к первому символу пустой строки.
Проверь понимание: Почему text.lower() без присваивания не меняет text?

Метод возвращает новую строку. Нужна запись text = text.lower(), потому что строки неизменяемы.

Очищаем и меняем текст

Запусти пример. Затем измени код или входные данные и проверь, как меняется вывод.

Пример входных данных

  Барсик  

Ожидаемый вывод

БАРСИК
6
main.pyPython · можно менять код

Подготавливаем редактор…

Загрузка Python…

Каждый ответ — с новой строки.

Твой вывод

Здесь появится результат запуска.

Дальше — самостоятельные задачи

  1. Получить инициалы
  2. Перевернуть слово
  3. Проверить фразу А роза упала на лапу Азора!