На Горох
Информатика, 10 класс

§ 66. Символьные строки

"Информатика (базовый и углублённый уровни) (в 2 частях)", Поляков К.Ю., Еремин Е.А.

Объяснение темы В оглавлении: § 66. Символьные строки

Кратко о теме

Символьная строка — упорядоченный набор символов, с которым программа может работать как с единым значением. Строки нужны, чтобы хранить и обрабатывать слова, сообщения и другие тексты. В Python к отдельным символам обращаются по индексам, получают части строк с помощью срезов и применяют операции соединения, повторения и поиска. Главное правило: индексация начинается с нуля, а сама строка после создания неизменяема.

Объяснение темы

Текст подготовлен нейронной сетью по теме параграфа и не заменяет учебник — важные факты и формулировки сверяйте с ним.

Определения и обозначения

Символьная строка — последовательность символов, записанная в программе в кавычках, например 'кот' или "добрый день". Кавычки показывают Python, где начинается и заканчивается текст. Строка отличается от отдельного символа тем, что может содержать любое число символов, в том числе ноль. В Python тип строки обозначается str.

Символ — один элемент строки: буква, цифра, знак препинания или пробел. Например, в строке 'дом 7' есть буквы, пробел и цифра. Пробел тоже занимает место и считается символом. Это нужно учитывать при поиске позиций и вычислении длины.

Индекс символа — его позиция в строке, записанная числом в квадратных скобках после имени строки. В Python нумерация начинается с нуля: у строки 'кот' индексы букв равны 0, 1 и 2. Можно обращаться и с конца: индекс −1 означает последний символ, −2 — предпоследний. Индексы позволяют получить нужный символ без перебора всего текста.

Срез — часть строки, которую получают по диапазону индексов. Запись s[a:b] выбирает символы начиная с a и до b, не включая b; в полной форме s[a:b:step] можно указать шаг. Например, 'котёнок'[0:3] даёт 'кот'. Срез удобен, когда нужно извлечь слово или выбрать символы через равные промежутки.

Как это устроено

Строка хранит символы в определённом порядке, поэтому два одинаковых набора букв в разном порядке — это разные строки. Каждый символ занимает позицию, а число таких позиций составляет длину строки. Функция len(s) возвращает это число, включая пробелы и знаки препинания. Например, в строке 'дом 7' длина равна пяти, потому что пробел тоже входит в последовательность.

Обращение s[i] позволяет взять символ, не просматривая строку вручную. Нумерация с нуля связана с тем, что индекс обозначает смещение от начала: до первого символа нужно пройти ноль позиций. Поэтому последний индекс равен длине минус один, а попытка обратиться к позиции за ним вызывает ошибку. Отрицательные индексы дают удобный способ отсчитывать с конца: −1 — последний символ, −2 — предыдущий.

Срез нужен, когда требуется не один символ, а часть строки. В записи s[a:b] позиция a входит в результат, а b служит границей остановки и не включается. Например, s[2:5] выбирает символы с индексами 2, 3 и 4. Если указать шаг, как в s[a:b:step], Python будет переходить от выбранной позиции к следующей через указанное число индексов; запись s[::2] берёт каждый второй символ.

Оператор + соединяет строки в новом порядке, а оператор * повторяет содержимое заданное число раз. Например, 'инфо' + 'рма' даёт 'информа', а 'ха' * 3 — 'хахаха'. Проверка part in s отвечает, встречается ли подстрока part внутри s: результатом будет True или False. Например, 'кот' in 'котёнок' даёт True, потому что первые три символа образуют искомую часть.

Строки в Python неизменяемы: после создания нельзя заменить символ непосредственно по индексу. Это помогает программе надёжно обращаться к данным, не опасаясь, что одна операция незаметно изменит исходный текст. Если нужно получить другой текст, следует создать новую строку с помощью срезов, соединения или других операций. Например, вместо изменения s[0] формируют новую строку из нового первого символа и оставшейся части.

Основные операции со строками в Python

ДействиеЗаписьЧто получаетсяПример
Длина строкиlen(s)Число символовlen("кот") → 3
Доступ к символуs[i]Символ с индексом i"кот"[0] → "к"
Доступ с концаs[-i]Символ, отсчитанный с конца"кот"[-1] → "т"
Получение срезаs[a:b:step]Символы от a до b−1 с заданным шагом"информатика"[0:4] → "инфо"
Сложение строкs1 + s2Новая строка из двух строк"инфо" + "рма" → "информа"
Повторение строкиs * nНовая строка из n повторений"ха" * 3 → "хахаха"
Проверка вхожденияpart in sЛогический результат проверки"кот" in "котёнок" → True

Сначала определите, какой результат нужен: длина, один символ, часть строки или новая строка. Затем выберите соответствующую запись и проверьте границы индексов, если работаете со срезом. Помните, что операция соединения или повторения создаёт новое значение, а не меняет исходные строки.

Разбор задач

Длина строки и символы по индексам

Дана строка s = "информатика". Нужно найти её длину и символы с индексами 0 и −1. Сначала выясним, сколько символов хранится в строке, а затем отдельно посмотрим на начало и конец. Так мы не будем путать прямую нумерацию с отсчётом от конца.

  1. Вычисляем len(s): в слове «информатика» 11 букв, поэтому длина равна 11.
  2. Обращаемся к s[0]: индекс 0 указывает на первую букву, это «и».
  3. Обращаемся к s[-1]: индекс −1 выбирает последнюю букву, это «а».

Ответ: длина строки равна 11, s[0] = «и», s[-1] = «а». Проверка проста: индексы прямого отсчёта идут от 0 до 10, а последний символ также доступен как −1. Оба способа указывают на одну и ту же конечную позицию.

Первые пять символов и символы с чётными индексами

Дана строка s, нужно получить её первые пять символов и строку из символов с чётными индексами. Граница среза не включается, поэтому для первых пяти позиций конечным индексом будет 5. Чётные индексы — это 0, 2, 4 и далее, значит, здесь удобно задать шаг 2.

  1. Записываем срез s[0:5] или короче s[:5]: он включает позиции 0–4 и возвращает первые пять символов.
  2. Для чётных индексов используем s[::2]: пропущенные границы означают всю строку, а шаг 2 выбирает каждую вторую позицию, начиная с 0.
  3. Проверяем результат по индексам: в первом срезе пять символов, во втором каждый выбранный символ стоит на чётной позиции исходной строки.

Ответ: первые пять символов — s[:5], символы с чётными индексами — s[::2]. Если строка короче пяти символов, первый срез вернёт её целиком, а ошибки не возникнет. Это удобно, когда заранее неизвестна длина текста.

Подсчёт букв «а»

Дана строка s, нужно подсчитать буквы «а», не изменяя исходную строку. Для этого перебирают символы по очереди и сравнивают каждый с искомой буквой. Отдельная переменная-счётчик хранит число совпадений, найденных к текущему моменту.

  1. Создаём счётчик count и присваиваем ему 0.
  2. Запускаем перебор: for ch in s. На каждом шаге ch становится очередным символом строки.
  3. Если ch == 'а', увеличиваем счётчик: count = count + 1. После завершения цикла значение count содержит общее число совпадений.

Ответ: алгоритм можно записать так: count = 0; for ch in s: if ch == 'а': count += 1. Перебор только читает символы, поэтому строка s остаётся прежней. Сравнение учитывает именно строчную «а»; чтобы считать также заглавную «А», текст перед проверкой нужно привести к одному регистру.

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

Первый символ ищут по индексу 1. Такую ошибку допускают, перенося привычную нумерацию предметов в список индексов Python. В результате s[1] возвращает второй символ, а не первый. Для проверки выпишите позиции короткой строки: первый символ имеет индекс 0.

Считают, что конечная граница среза включается. Например, s[0:3] содержит позиции 0, 1 и 2, а символ с индексом 3 в результат не попадёт. Путаница возникает потому, что диапазон часто понимают как две включённые границы. Проверьте число символов: длина такого среза обычно равна 3 − 0, а не четырём.

Обращаются к несуществующему индексу. Для строки длины n положительные индексы лежат от 0 до n − 1; индекс n уже выходит за пределы. Ошибка часто появляется после подсчёта длины без учёта нулевого начала нумерации. Перед обращением убедитесь, что индекс меньше длины, а отрицательный индекс не меньше −n.

Пытаются присвоить значение символу по индексу. Запись вроде s[0] = 'А' не сработает, потому что строки неизменяемы. Это может показаться неожиданным, если сравнивать строку со списком, элементы которого можно заменять. Создайте новую строку и проверьте её отдельно, оставив исходное значение без изменений.

Связь с другими темами

Для работы со строками нужны переменные, типы данных и базовые операции Python: строку следует сохранить в переменной, а результат выражений — правильно интерпретировать. Понимание условий и циклов помогает искать символы и считать их количество. Строковые операции применяют при чтении и обработке текстовых файлов, поиске и преобразовании текста. Они также встречаются в алгоритмических задачах, где нужно проверять или перестраивать последовательности символов.

Что запомнить

  • Строка — упорядоченная последовательность символов.
  • Индексы символов в Python начинаются с нуля.
  • Индекс −1 обозначает последний символ строки.
  • В срезе s[a:b] позиция a включается, а b не включается.
  • Операции со строками обычно создают новые строки.
  • Строки в Python нельзя изменять по отдельным индексам.

Частые вопросы по теме

Почему индекс первого символа равен нулю?

В Python индекс показывает смещение от начала строки. У первого символа смещение равно нулю, у следующего — единице. Поэтому строка из трёх символов имеет индексы 0, 1 и 2.

Как получить последний символ строки?

Используйте отрицательный индекс −1: например, s[-1]. Отрицательные индексы отсчитываются от конца, поэтому −1 обозначает последний символ, а −2 — предпоследний.

Почему конечный символ не входит в срез?

В срезе s[a:b] начальная граница включается, а конечная — нет. Так удобно задавать длину части строки как разность b − a и соединять соседние срезы без пересечений.

Можно ли изменить один символ строки по индексу?

Нет, строка в Python неизменяема, поэтому присваивание вида s[0] = 'А' вызовет ошибку. Чтобы получить изменённый текст, создайте новую строку, например соедините нужный символ с оставшимися частями.

Чем срез отличается от обращения к одному символу?

Обращение s[i] возвращает один символ с индексом i. Срез s[a:b] возвращает новую строку из нескольких символов между заданными границами; шаг позволяет выбирать символы через определённые промежутки.

Спросить по теме параграфа

§ 66. Символьные строки

Эта же тема в других учебниках

Учебник

Оглавление →
Предмет
Информатика
Класс
10 класс
Учебник
"Информатика (базовый и углублённый уровни) (в 2 частях)", Поляков К.Ю., Еремин Е.А.