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

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

"Информатика", Поляков К.Ю., Еремин Е.А.

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

Кратко о теме

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

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

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

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

Символьная строка — упорядоченная последовательность символов. Она может состоять из букв, цифр, пробелов и знаков препинания: например, «Привет, 9 класс!» — одна строка. Порядок важен, потому что перестановка символов меняет значение текста; строками удобно хранить и обрабатывать слова, сообщения и другие текстовые данные.

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

Индекс символа — целое число, указывающее позицию символа в строке. В Python нумерация начинается с нуля, поэтому у строки 'кот' индекс 0 указывает на 'к', а индекс 1 — на 'о'. Индекс позволяет обратиться к одному символу, не перебирая всю строку вручную.

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

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

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

Длину строки в Python получают функцией len(s). Она считает каждый символ, поэтому пробел между словами и знак препинания тоже увеличивают результат на единицу. Это полезно, например, чтобы проверить размер введённого текста или определить допустимые позиции для обращения к символам.

Индексация выбирает один символ, а срез — несколько соседних символов. При записи s[a:b] Python включает позицию a, но останавливается перед позицией b; поэтому количество символов во фрагменте обычно равно b − a. Правая граница не включается, чтобы длина среза сразу вычислялась как разность границ, а соседние фрагменты было легко задавать без пересечений.

Сцепление с помощью + ставит строки друг за другом, а умножение на целое число повторяет их содержимое. Например, 'добро' + 'е' даёт 'доброе', а 'ха' * 3 — 'хахаха'. Эти операции создают новое строковое значение: оно составляется из исходных частей, но исходные строки остаются прежними.

Оператор in проверяет, встречается ли заданная подстрока: выражение 'о' in 'кот' даёт True, то есть истину. Для поиска позиции фрагмента у строки есть метод find, а для получения текста с заменой — метод replace; например, 'кот'.replace('о', 'а') вернёт 'кат'. Поскольку строки неизменяемы, результат замены нужно сохранить, если он понадобится дальше: t = s.replace('о', 'а').

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

ОперацияЧто делаетПример результата
Определение строкиЗадаёт последовательность символов'кот'
Длина строкиВозвращает число символовlen('кот') → 3
ИндексацияВозвращает символ с указанной позиции'кот'[0] → 'к'
СрезВозвращает часть строки'кошка'[1:4] → 'ошк'
СцеплениеОбъединяет строки подряд'добро' + 'е' → 'доброе'
ПовторениеПовторяет строку заданное число раз'ха' * 3 → 'хахаха'
Проверка вхожденияПроверяет, встречается ли подстрока'о' in 'кот' → True

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

Разбор задач

Задача 1. Дана строка «информатика». Найдите её длину и символ с индексом 2. Сначала считаем все символы, не забывая, что отсчёт позиции начинается с нуля. Затем определяем третий по счёту символ, так как его индекс на единицу меньше привычного порядкового номера.

  1. Запишем строку в переменную: s = 'информатика'.
  2. Вычислим длину: len(s) равно 11, поскольку в слове одиннадцать символов.
  3. Найдём s[2]: индексы первых символов — 0 для 'и', 1 для 'н' и 2 для 'ф'.

Ответ: длина строки равна 11, символ с индексом 2 — 'ф'. Проверить результат можно, выписав индексы над буквами, начиная с нуля. Такой способ особенно полезен, если нужная позиция находится не в начале слова.

Задача 2. Из строки «программирование» получите подстроку «грамм», используя срез. Чтобы не ошибиться в границах, сначала найдём индексы букв искомого фрагмента. В Python правая граница среза не включается, поэтому после последней нужной буквы указывают следующий индекс.

  1. Нумеруем символы исходной строки с нуля: фрагмент начинается с индекса 3.
  2. Буквы «грамм» занимают позиции от 3 до 7 включительно, значит, правая граница среза должна быть 8.
  3. Записываем s[3:8]; выражение возвращает символы с индексами 3, 4, 5, 6 и 7.

Ответ: s[3:8] даёт 'грамм'. В срезе пять символов, что совпадает с разностью границ 8 − 3. Если бы справа указали 7, последняя буква «м» не попала бы в результат.

Задача 3. Дана строка с именем и фамилией через пробел. Составьте строку вида «Фамилия, Имя» и проверьте, есть ли в исходной строке пробел. Разделитель помогает отделить части имени, а сцепление позволяет собрать их в нужном порядке. Для примера возьмём s = 'Анна Смирнова'.

  1. Проверяем наличие пробела выражением ' ' in s; результат True означает, что разделитель есть.
  2. Разделяем строку по пробелу: parts = s.split(' '); получаем имя в parts[0], фамилию — в parts[1].
  3. Собираем нужный порядок: result = parts[1] + ', ' + parts[0]. При исходной строке 'Анна Смирнова' получится 'Смирнова, Анна'.

Ответ: результат — 'Смирнова, Анна', наличие пробела подтверждается значением True. В этой задаче split делит текст на части, а сцепление соединяет фамилию, запятую и имя. Если формат исходных данных может отличаться, перед обращением к parts[1] следует проверить, что разделение действительно дало две части.

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

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

Ошибка: включать правую границу среза в результат. Тогда ученик может выбрать границу на один больше нужной или, наоборот, получить фрагмент без последнего символа. Помните, что s[a:b] включает a и не включает b; проверьте длину результата, вычислив b − a.

Ошибка: путать строку с числом, записанным в кавычках. Например, '25' — текст, а не число 25, поэтому строку нельзя напрямую использовать в арифметическом сложении с числом. Путаница возникает из-за одинаковых на вид цифр; проверить себя можно по кавычкам и типу значения, а для вычислений преобразовать текст в число.

Ошибка: считать, что сцепление или замена меняют исходную строку. В Python такие операции возвращают новое значение, поэтому без присваивания результат не сохраняется; это путают с изменением обычной переменной. Проверьте, куда записан результат: например, после t = s.replace('а', 'о') новое значение находится в t, а s остаётся прежней.

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

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

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

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

  • Строка — последовательность символов.
  • Строковый литерал записывают в кавычках.
  • Длина строки равна числу её символов.
  • Индексация символов начинается с нуля.
  • Правая граница среза не включается в результат.
  • Сцепление объединяет строки, а повторение создаёт несколько копий строки.
  • Результат строковой операции нужно присвоить переменной, если его требуется сохранить.

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

Может ли строка содержать цифры и пробелы?

Да. Строка может содержать буквы, цифры, пробелы, знаки препинания и другие символы. Например, «ул. Лесная, 12» — строка, хотя в ней есть цифры.

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

Индекс показывает смещение символа от начала строки. У первого символа смещение равно нулю, у следующего — единице. Поэтому индекс — это не порядковый номер в привычном счёте.

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

В Python последний символ можно получить по индексу -1: например, 'кот'[-1] даёт 'т'. Отрицательные индексы отсчитываются с конца, где -1 обозначает последний символ.

Почему правая граница среза не входит в результат?

В Python срез берёт символы от начальной позиции до позиции, указанной справа, но не включая её. Такое правило позволяет задавать длину фрагмента вычитанием границ: например, в [1:4] попадут три символа.

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

Нет, в Python нельзя присвоить новое значение отдельному символу строки по индексу. Можно создать новую строку, например соединить нужные части с заменённым символом, и сохранить результат в переменную.

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

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

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

Учебник

Оглавление →
Предмет
Информатика
Класс
9 класс
Учебник
"Информатика", Поляков К.Ю., Еремин Е.А.