Глава 8 · Играем с буквами и словами

Срезы строки

Срез достаёт из строки сразу целый кусок — а не один символ. Разберём границы среза наглядно, по коробочкам.

Срез — это кусок строки

Срез (slice) достаёт из строки сразу несколько символов подряд: строка[start:stop]. Здесь start — индекс, с которого срез начинается (включительно), а stop — индекс, на котором срез заканчивается (НЕ включительно).

stop не включается — и это специально
Правая граница среза не входит в результат. Звучит странно, но у этого есть удобное следствие: длина среза всегда равна stop - start. Мысленно удобно представлять индексы не как номера БУКВ, а как номера ГРАНИЦ МЕЖДУ буквами — посмотрите на числа над коробками ниже: они стоят ровно в промежутках.

Первые три символа

srez_pervye_tri.py
word = "Cartesian"
print(word[0:3])   # Car
0
1
2
3
4
5
6
7
8
9
C
a
r
t
e
s
i
a
n
"Car"
word[0:3] — от границы 0 до границы 3 (не включая её)

Последние три символа

srez_poslednie_tri.py
word = "Cartesian"
print(word[6:9])   # ian
0
1
2
3
4
5
6
7
8
9
C
a
r
t
e
s
i
a
n
"ian"
word[6:9] — от границы 6 до конца строки (границы 9)

Кусок из середины

srez_seredina.py
word = "Cartesian"
print(word[3:6])   # tes
0
1
2
3
4
5
6
7
8
9
C
a
r
t
e
s
i
a
n
"tes"
word[3:6] — «средний» кусок, от границы 3 до границы 6

Пропущенные границы

Если start пропустить — срез начинается с самого начала строки. Если пропустить stop — срез идёт до самого конца. Пропустить можно и обе границы сразу — тогда получится копия всей строки:

propushchennye_granicy.py
word = "Cartesian"
print(word[:3])    # Car  — то же самое, что word[0:3]
print(word[6:])    # ian  — то же самое, что word[6:9]
print(word[:])     # Cartesian — копия строки целиком

Шаг среза

У среза есть и третий, необязательный параметр — шаг: строка[start:stop:step]. Шаг 2 значит «берём каждый второй символ»:

shag_sreza.py
word = "Cartesian"
print(word[::2])    # Craea — каждый второй символ, с начала до конца

Разворот строки: [::-1]

Отрицательный шаг проходит строку в обратном направлении. Если пропустить и start, и stop, а шаг поставить -1 — получится строка задом наперёд:

razvorot_sreza.py
word = "Cartesian"
print(word[::-1])   # naisetraC
Самый короткий способ развернуть строку
строка[::-1] — классический приём Python. Третий параметр среза — «шаг»; шаг -1 проходит строку с конца в начало. Мы воспользуемся этим в мини-проекте 8.20.
★★ Самостоятельная задача
Средние буквы через шаг

Для слова «программирование» получите срезом каждую третью букву (шаг 3), а затем — само слово, развёрнутое задом наперёд.

Практика: срезы строки
Интерактивный ноутбук прямо в браузере — Python 3.14 через Pyodide, без установки
Открыть практику →