Строки

Текст в программе называют строкой. И строки умеют куда больше, чем просто печататься: их можно резать по буквам и кусочкам, переворачивать, искать в них и заменять. Сегодня разберём это по-настоящему — и сразу много попрактикуемся, потому что владеть строками = много с ними поработать руками.

Дружелюбный робот-шифровальщик переворачивает буквы слова в секретный код

Строка — цепочка символов

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

slovo = "Робот"
print(len(slovo))
print(slovo[0])
print(slovo[-1])
5
Р
т
  Строка — это символы по порядку, у каждого свой индекс:

  slovo = "Робот"

  символ:   Р   о   б   о   т
  индекс:   0   1   2   3   4
                              
  len(slovo) = 5
  slovo[0]  = "Р"   (первый символ)
  slovo[-1] = "т"   (последний символ)
Индексы начинаются с 0, а не с 1. Отрицательный индекс считает с конца: -1 — последний символ, -2 — предпоследний.

Берём кусочек: срезы

Срез берёт из строки не один символ, а целый кусок: slovo[начало:конец] — символы с индекса «начало» до «конец», причём «конец» НЕ включается. Пропустишь начало — срез пойдёт с самого старта строки; пропустишь конец — до самого конца.

slovo = "программист"
print(slovo[0:4])
print(slovo[:4])
print(slovo[-3:])
прог
прог
ист
  Срез берёт кусочек строки  slovo[начало:конец]:

  slovo = "питон"
  индекс:  0 1 2 3 4
           п и т о н

  slovo[0:3]  -->  "пит"   (с 0 до 3, тройку НЕ включая)
  slovo[2:]   -->  "тон"   (с 2 и до конца)
  slovo[:2]   -->  "пи"    (с начала до 2)
Главная ловушка срезов: правый край НЕ входит. slovo[0:3] берёт символы 0, 1, 2 — три штуки, а символ с индексом 3 уже не берётся.

Переворачиваем строку — шифровка-перевёртыш

Особый срез [::-1] переворачивает строку задом наперёд. Получается простейшая шифровка: прочитать перевёрнутое слово сходу не так-то просто.

slovo = "привет"
print(slovo[::-1])
тевирп
  Срез [::-1] читает строку задом наперёд:

   "привет"   --[::-1]-->   "тевирп"

    п р и в е т              т е в и р п
    ----------->             <-----------
    как есть                 перевёрнуто
Чтобы расшифровать перевёртыш — переверни его ещё раз тем же [::-1]. Два переворота возвращают исходное слово.

Меняем регистр и склеиваем

Метод .upper() делает все буквы ЗАГЛАВНЫМИ, а .lower() — строчными. Строки склеивают знаком +. Соединим это и сделаем ник.

imya = "алекс"
nick = imya.upper() + "_2024"
print(nick)
АЛЕКС_2024

Ищем и меняем: count, find, replace

Индексы и срезы — про то, ГДЕ символы. А ещё строки умеют искать и заменять, и это используют постоянно:

  • .count("а") — сколько раз буква или кусочек встречается в строке;
  • .find("кот") — на каком индексе первое вхождение (или -1, если не найдено);
  • .replace("а", "о") — заменить все «а» на «о» (получается новая строка).
fraza = "мама мыла раму"
print(fraza.count("а"))
print(fraza.find("мыла"))
print(fraza.replace("а", "о"))
4
5
момо мыло рому
replace не меняет старую строку, а создаёт новую — поэтому результат печатают или кладут в переменную. А find возвращает -1, если искомого в строке нет.

Упражнение: ник, шифровка и цензор

Скопируй программу и запусти. Она делает сразу три штуки: ник из имени, шифровку-перевёртыш и цензор, который заменяет слово на звёздочки.

# Ник, шифровка и цензор
imya = input("Твоё имя: ")
print("Твой ник:", imya.upper() + "_2024")

soobshenie = input("Секретное сообщение: ")
print("Шифровка:", soobshenie[::-1])

tekst = input("Фраза для цензора: ")
print("После цензора:", tekst.replace("бяка", "****"))
Твоё имя: алекс
Твой ник: АЛЕКС_2024
Секретное сообщение: привет друг
Шифровка: гурд тевирп
Фраза для цензора: ты бяка
После цензора: ты ****
  • Поменяй суффикс ника "_2024" на свой.
  • В цензоре поменяй слово "бяка" на то, что хочешь прятать.
  • Добавь строку: посчитай, сколько букв в сообщении — len(soobshenie) — и выведи.
Хочешь надёжнее спрятать слово? Сначала .replace на звёздочки, а потом ещё переверни всё [::-1] — двойная защита.

Контрольный вопрос. У строки slovo = «Робот» какой символ вернёт slovo[0]?

Исходный код для этого задания:

slovo = "Робот"
АР — индексы начинаются с 0, значит [0] это первый символ
Бо — потому что отсчёт идёт со второго символа
Вт — [0] берёт последний символ

Подсказка: Индекс 0 — это самый первый символ строки.

Онлайн-проверка ответа появится позже

Контрольный вопрос. Что выведет программа из этого задания? Впиши число.

Исходный код для этого задания:

slovo = "питон"
print(len(slovo))

Подсказка: len считает количество символов в строке. Посчитай буквы в слове «питон».

Онлайн-проверка ответа появится позже

Контрольный вопрос. Что выведет программа из этого задания? Впиши слово, которое появится.

Исходный код для этого задания:

slovo = "программист"
print(slovo[:4])

Подсказка: Срез [:4] берёт символы с начала до индекса 4 (четвёрку не включая) — то есть первые четыре буквы.

Онлайн-проверка ответа появится позже

Контрольный вопрос. Что выведет программа из этого задания? Впиши то, что появится.

Исходный код для этого задания:

slovo = "привет"
print(slovo[-3:])

Подсказка: Срез [-3:] берёт три последних символа (с конца).

Онлайн-проверка ответа появится позже

Контрольный вопрос. Что выведет программа из этого задания? Впиши слово, которое появится.

Исходный код для этого задания:

slovo = "привет"
print(slovo[::-1])

Подсказка: Срез [::-1] переворачивает строку задом наперёд. Прочитай «привет» с конца.

Онлайн-проверка ответа появится позже

Задание. Напиши код сам. В переменной imya лежит имя маленькими буквами. Напиши команду print, которая выведет это имя ЗАГЛАВНЫМИ буквами.

Исходный код для этого задания:

imya = "алекс"
# напиши ниже команду print, которая выведет имя заглавными буквами

Подсказка: Метод .upper() делает буквы заглавными. Шаблон: print(имя_переменной.upper()).

✅ Готово, если: ты ввёл(а) верный ответ, и онлайн-проверка его приняла.

Онлайн-проверка ответа появится позже

Задание. Напиши код сам. В переменной slovo лежит слово ЗАГЛАВНЫМИ буквами. Напиши команду print, которая выведет его маленькими (строчными) буквами.

Исходный код для этого задания:

slovo = "КРИК"
# напиши ниже команду print, которая выведет slovo строчными буквами

Подсказка: Метод .lower() делает буквы строчными. Шаблон: print(имя_переменной.lower()).

✅ Готово, если: ты ввёл(а) верный ответ, и онлайн-проверка его приняла.

Онлайн-проверка ответа появится позже

Задание. Напиши код сам. В переменной slovo лежит слово «молоко». Напиши команду print, которая заменит в нём все буквы о на цифру 0 и выведет результат.

Исходный код для этого задания:

slovo = "молоко"
# напиши ниже команду print, которая заменит о на 0 и выведет результат

Подсказка: Метод .replace(«что», «на что»). Шаблон: print(slovo.replace(«о», «0»)).

✅ Готово, если: ты ввёл(а) верный ответ, и онлайн-проверка его приняла.

Онлайн-проверка ответа появится позже

Задание. Напиши код сам. В переменной slovo лежит слово «ананас». Напиши команду print, которая посчитает, сколько раз буква а встречается в слове, и выведет это число.

Исходный код для этого задания:

slovo = "ананас"
# напиши ниже команду print, которая посчитает буквы а и выведет число

Подсказка: Метод .count(«буква») считает вхождения. Шаблон: print(slovo.count(«а»)).

✅ Готово, если: ты ввёл(а) верный ответ, и онлайн-проверка его приняла.

Онлайн-проверка ответа появится позже

Задание. Напиши код сам. В переменной slovo лежит слово «привет». Напиши команду print, которая найдёт позицию (индекс) буквы и в слове и выведет её.

Исходный код для этого задания:

slovo = "привет"
# напиши ниже команду print, которая найдёт индекс буквы и и выведет его

Подсказка: Метод .find(«буква») возвращает индекс первого вхождения. Шаблон: print(slovo.find(«и»)).

✅ Готово, если: ты ввёл(а) верный ответ, и онлайн-проверка его приняла.

Онлайн-проверка ответа появится позже

Контрольный вопрос. Программа должна поздороваться по имени, но вместо имени печатает {imya}. Что забыли в команде print из этого задания?

Исходный код для этого задания:

imya = "Алекс"
print("Привет, {imya}!")
АБукву f перед кавычками — без неё это не f-строка, и {imya} печатается как есть
БЗапятую внутри скобок
ВКоманду input выше

Подсказка: Чтобы значение переменной подставилось вместо {imya}, перед кавычками нужна особая буква.

Онлайн-проверка ответа появится позже

Что дальше

Теперь ты не просто знаешь про строки — ты умеешь резать, переворачивать, искать, считать и заменять в них, и потренировался на каждом приёме. В следующем разделе научим программу принимать решения командой if и соберём бота-предсказателя.

Назад  ·  ↑ В начало урока  ·  ⌂ В начало курса  ·  Вперёд →

Школа Виктора Комлева