Введение
В этой статье мы познакомимся с типом данных «строка» в Python. Вы узнаете, как создавать строки, работать с ними с помощью операций, методов и срезов, а также научитесь извлекать нужные символы и изменять текст с помощью встроенных функций.
Термины, которые будем использовать: строки, срез, индекс, отрицательная индексация, методы, дублирование, конкатенация строк.
Что такое строка
Строка (string) — это последовательность символов: букв, цифр, знаков препинания.
# Примеры строк
имя = «Анна»
фамилия = ‘Иванова’ # Можно использовать и двойные, и одинарные кавычки
сообщение = «Привет, мир!»
число_как_строка = «123»
пустая_строка = «»
Как создавать строки
- Простые строки
строка1 = «Привет»
строка2 = ‘Мир’ - Многострочные строки
# Тройные кавычки для длинного текста
текст = «»»Это многострочный
текст, который
занимает несколько строк»»»
Знакомая тебе функция input() всегда возвращает строку, что бы ни ввёл пользователь.
Основные операции со строками
- Конкатенация (сложение строк)
имя = «Мария»
фамилия = «Петрова»
полное_имя = имя + » » + фамилия
print(полное_имя) # Вывод: Мария Петрова# Складывать можно только строки!
возраст = 25
# print(«Мне » + возраст + » лет») # ОШИБКА! Нельзя складывать строку и число
print(«Мне » + str(возраст) + » лет») # Правильно! - Дублирование (умножение строк)
смех = «ха»
много_смеха = смех * 5
print(много_смеха) # Вывод: хахахахахаразделитель = «-» * 30
print(разделитель) # Вывод: —————————— - Длина строки
слово = «Питон»
длина = len(слово) # len() — функция для подсчёта длины (количества ВСЕХ символов в строке)
print(f»Слово ‘{слово}’ состоит из {длина} символов»)
# Вывод: Слово ‘Питон’ состоит из 5 символов
Обрати внимание, что в примере выше используется конструкция — f-строка для форматирования вывода.
Что такое f-строка
F-строка — это «умная» строка, которая сама подставляет значения переменных и выполняет вычисления внутри себя.
Представь, что обычная строка — это просто текст в блокноте, а f-строка — это «живой» документ, который автоматически обновляет все числа и имена.
Фигурные скобки {} — это окошко в строку, через которое ты можешь:
- вставить значение переменной,
- выполнить вычисление,
- вызвать функцию.
Задание: создай визитку с помощью f-строк
name = «Алексей»
job = «разработчик»
experience = 3
salary = 150000
# Напиши код, который выведет:
# ======= ВИЗИТКА =======
# Имя: Алексей
# Должность: разработчик
# Опыт: 3 года
# Зарплата: 150,000 руб.
# =======================
Индексы
Каждый символ строки имеет свой индекс, начиная с 0.
- У первого символа строки индекс равен 0.
- У второго символа — 1.
- И так далее до последнего символа.
Пример
word = «apple»
В этой строке пять символов, их индексы: 0, 1, 2, 3, 4.
То есть последний индекс вычисляется по формуле: длина строки − 1.
Как обратиться к символу
Чтобы обратиться к определённому символу, нужно указать имя строки и нужный индекс в квадратных скобках. Например, print(word[0]) выведет a, print(word[2]) выведет p. Таким образом, word[0] возвращает первый символ строки, word[2] — третий символ.
Отрицательная индексация
В Python можно использовать отрицательные индексы для обращения к символам с конца строки.
- Индекс −1 обозначает последний символ.
- Индекс −2 — предпоследний, и так далее.
- Нумерация идёт справа налево, с шагом −1.
Например, print(word[-1]) выведет e (последний символ), а print(word[-3]) выведет p (третий символ с конца).
Таким образом, отрицательные индексы позволяют быстро получать символы с конца строки без вычисления длины.
Важно
Попытка обратиться к несуществующему индексу вызовет ошибку IndexError.
Например:
word = «apple»
print(word[10])
Вывод:
IndexError: string index out of range
Это означает, что индекс 10 не существует в строке длиной 5 символов (индексы 0–4).
Срезы
Срезы позволяют получить часть исходной строки по заданным индексам.
Структура среза
подстрока = строка[начало : конец : шаг]
Начало — индекс, с которого начинается срез (включительно).
Конец — индекс, на котором заканчивается срез (не включительно).
Шаг — интервал между элементами.
Срез всегда возвращает новую строку.
numbers = «0123456789»
# Элементы с индекса 2 до 5 (5 не включается)
print(numbers[2:5]) # «234»
Если срез начинается с индекса 0, то ноль можно опустить и ничего не писать:
# С начала до индекса 4
print(numbers[:4]) # «0123»
Если срез идёт до конца, последний индекс можно также опустить:
# С индекса 6 до конца
print(numbers[6:]) # «6789»
Можно создать копию строки:
print(numbers[:]) # «0123456789»
Срез с шагом
Шаг работает аналогично функции range(), по умолчанию он равен единице.
numbers = «0123456789»
# Каждый второй элемент
print(numbers[::2]) # «02468»
# С шагом 3, начиная с индекса 1
print(numbers[1::3]) # «147»
# Обратный порядок (разворот строки)
print(numbers[::-1]) # «9876543210»
Срезы с отрицательными индексами
Отрицательные индексы отсчитываются с конца строки (−1 — последний символ).
numbers = «0123456789»
# Последние 3 элемента
print(numbers[-3:]) # «789»
# Все, кроме последних 3
print(numbers[:-3]) # «0123456»
# С −5 до −2
print(numbers[-5:-2]) # «567»
Особенности работы со срезами
- Индексы за пределами строки не вызывают ошибку:
nums = «123»
print(nums[1:10]) # «23» — просто обрезается - Пустая строка, если начало >= конца:
print(nums[3:1]) # «» - При отрицательном шаге начало должно быть >= конца:
print(nums[3:1:-1]) # «32»
Срезы позволяют гибко извлекать части строки, получать символы через интервалы и разворачивать текст.
Методы строк
Методы строк — это функции, которые вызываются у объектов-строк. Они позволяют искать, подсчитывать, заменять и обрабатывать текст.
Для примера вызовем их у строки s.
1. Поиск символа или подстроки
s.find(искомый элемент, с какого индекса начинаем поиск, каким индексом заканчиваем поиск) — определяет индекс искомого элемента в строке s. Если их несколько, то выводит первый.
s = ‘abacdefabc’
print(s.find(‘a’, 1, 4)) — выведет 2
s.rfind(искомый элемент, с какого индекса начинаем поиск, каким индексом заканчиваем поиск) — определяет индекс искомого элемента в строке s. Если их несколько, то выводит последний.
s = ‘abacdefabc’
print(s.rfind(‘a’)) — выведет 7
Если же искомого символа нет в строке, то python выведет −1:
s = ‘12345’
print(s.rfind(‘a’)) — -1
2. Подсчёт количества вхождений
s.count(искомый элемент) — определяет, сколько раз искомый элемент встречается в строке s.
s = ‘121345’
print(s.count(‘1’)) — выведет 2
s = ‘abc’
print(s.count(‘1’)) — выведет 0
3. Замена элементов
s.replace(заменяемый элемент, на что заменяем, какое количество раз заменяем(k)) — заменяет элементы k раз в строке s.
s = ‘1 2 3 4 5 6 7 8 9’
print(s.replace(‘ ‘, ‘*’, 5)) — выведет 1*2*3*4*5*6 7 8 9
s = ‘1 2 3 4 5 6 7 8 9’
print(s.replace(‘ ‘, ‘*’)) — выведет 1*2*3*4*5*6*7*8*9
Важно: строки в Python — неизменяемый тип данных. Никакую строку нельзя изменить после создания. Каждый раз нужно создавать новую, возможно, на основе исходной (с помощью среза, например).
Задачи на практику
Задача 1. Палиндром-детектив
Напишите программу, которая:
- запрашивает у пользователя слово с маленькой буквы;
- проверяет, является ли оно палиндромом (читается одинаково слева направо и справа налево);
- использует отрицательную индексацию для проверки
.
word = input()
if word == word[::-1]:
print(f»Слово ‘{word}’ — палиндром!»)
else:
print(f»Слово ‘{word}’ — не палиндром.»)
Задача 2. Секретное сообщение
Напишите программу, которая:
- принимает от пользователя фразу;
- выводит только первую, среднюю и последнюю буквы;
- если букв чётное количество, выводит две средние буквы.
phrase = input(«Введите фразу: «)
length = len(phrase)
# Всегда выводим первую и последнюю буквы
print(f»Первая буква: {phrase[0]}»)
print(f»Последняя буква: {phrase[-1]}»)
# Проверяем чётность длины для выбора средних букв
if length % 2 == 1: # Нечётная длина
middle = length // 2
print(f»Средняя буква: {phrase[middle]}»)
else: # Чётная длина
right = length // 2
left = right — 1
print(f»Две средние буквы: {phrase[left]}{phrase[right]}»)
Задача 3. Поисковик повторений
Напишите программу, которая:
- запрашивает у пользователя строку и символ для поиска;
- находит первую и последнюю позицию этого символа в строке, если символов нет — выводит −1;
- находит количество этого символа во всей строке.
phrase = input()
letter = input()
print(phrase.find(letter))
print(phrase.rfind(letter))
print(phrase.count(letter))
Задача 4. Редактор текста
Напишите программу, которая:
- запрашивает у пользователя текст и слово для замены;
- заменяет все вхождения этого слова на «[СЕКРЕТНО]»;
- использует методы replace() и count().
text = input(«Введите текст: «)
word = input(«Какое слово заменить? «)
# Считаем, сколько раз слово встречается
count = text.count(word)
if count == 0:
print(f»\nСлово ‘{word}’ не найдено в тексте.»)
else:
print(f»Слово ‘{word}’ встречается {count} раз(а)»)
new_text = text.replace(word, «[СЕКРЕТНО]»)
print(f»\nОригинальный текст:\n{text}»)
print(f»\nОтредактированный текст:\n{new_text}»)
Заключение
Строки в Python дают возможность гибко работать с текстом. С помощью индексов, срезов и методов ты можешь извлекать символы, проверять слова, менять текст и искать повторения. Практикуйся на задачах — это лучший способ закрепить навыки.
Автор:
Быкова Оксана, методист «100балльного репетитора» по информатике ЕГЭ