Python. Строки и срезы

11 класс

Поделиться статьей:

Informatics

Введение

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

Термины, которые будем использовать: строки, срез, индекс, отрицательная индексация, методы, дублирование, конкатенация строк.

Что такое строка

Строка (string) — это последовательность символов: букв, цифр, знаков препинания.

# Примеры строк
имя = «Анна»
фамилия = ‘Иванова’ # Можно использовать и двойные, и одинарные кавычки
сообщение = «Привет, мир!»
число_как_строка = «123»
пустая_строка = «»

Забирай курсы подготовки к ОГЭ и ЕГЭ с жирной скидкой

Как создавать строки

  1. Простые строки
    строка1 = «Привет»
    строка2 = ‘Мир’
  2. Многострочные строки
    # Тройные кавычки для длинного текста
    текст = «»»Это многострочный
    текст, который
    занимает несколько строк»»»

Знакомая тебе функция input() всегда возвращает строку, что бы ни ввёл пользователь.

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

  1. Конкатенация (сложение строк)

    имя = «Мария»
    фамилия = «Петрова»
    полное_имя = имя + » » + фамилия
    print(полное_имя) # Вывод: Мария Петрова

    # Складывать можно только строки!
    возраст = 25
    # print(«Мне » + возраст + » лет») # ОШИБКА! Нельзя складывать строку и число
    print(«Мне » + str(возраст) + » лет») # Правильно!

  2. Дублирование (умножение строк)

    смех = «ха»
    много_смеха = смех * 5
    print(много_смеха) # Вывод: хахахахаха

    разделитель = «-» * 30
    print(разделитель) # Вывод: ——————————

  3. Длина строки
    слово = «Питон»
    длина = 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»

Особенности работы со срезами

  1. Индексы за пределами строки не вызывают ошибку:
    nums = «123»
    print(nums[1:10]) # «23» — просто обрезается
  2. Пустая строка, если начало >= конца:
    print(nums[3:1]) # «»
  3. При отрицательном шаге начало должно быть >= конца:
    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балльного репетитора» по информатике ЕГЭ

Забирай курсы подготовки к ОГЭ и ЕГЭ с жирной скидкой

В 100б ты пробьёшь свой
максимум на экзаменах

наши лучшие курсы

Выбери подходящий курс и предмет, чтобы прокачаться и сдать ОГЭ на «5», а ЕГЭ на 80+ баллов

Выбрать курс

бесплатные материалы

Курсы, вебы, чек-листы — всё за 0 ₽

Забрать за 0 ₽

Интенсив по поступлению

Запишись на интенсив по поступлению, чтобы
взять из ЕГЭ максимум и попасть в вуз мечты

Записаться
В 100балльном репетиторе ты пробьёшь свой максимум на экзаменах

Преимущества подготовки
в 100балльном

10+
лет средний опыт наших преподавателей

18
выпускников сдали ЕГЭ
на 200 из 200 в 2024 году

300k+
учеников поступили в вуз мечты с нашей помощью 

14%
стобалльников России — наши выпускники

2 347
выпускника сдали ЕГЭ на 100 баллов

Преимущества подготовки в 100балльном

Запишись
на бесплатный
вводный урок

Познакомим с преподавателями и платформой

Расскажем про учёбу

Поможем поставить цель

  • 11 класс
  • 10 класс
  • 9 класс
  • 8 класс
  • 7 класс
Запись на вводный урок