Начало входит, конец не входит
Срез text[start:stop] возвращает подстроку от индекса start до stop, не включая stop. Например, "12-08-2034"[6:10] даёт "2034". Результат остаётся строкой, даже если состоит только из цифр.
Пропущенное начало означает начало строки, пропущенный конец — её конец. Поэтому "Hexlet"[:3] равно "Hex", а "Hexlet"[3:] — "let".
Задание источника
Из известного адреса https://hexlet.io извлеките hexlet.io:
url = "https://hexlet.io"
print(url[8:])
Префикс https:// занимает восемь позиций, поэтому нужная часть начинается с индекса 8. Для этих исходных данных решение точное. Оно не является универсальным парсером адресов: при другом протоколе, пути или параметрах фиксированный срез может вернуть не только домен.
Шаг и обратный порядок
Третий параметр задаёт шаг:
value = "Hexlet"
print(value[1:5:2]) # el
print(value[::2]) # Hxe
print(value[::-1]) # telxeH
print(value[4:1:-1]) # elx
При отрицательном шаге движение идёт справа налево. Конечная граница по-прежнему не включается. Шаг ноль недопустим и вызывает ValueError.
Срез и одиночный индекс
Срез за пределами длины обычно ограничивается доступными границами: "abc"[1:100] возвращает "bc". Одиночный доступ "abc"[100], напротив, вызывает ошибку. Не нужно переносить поведение одного механизма на другой.
Hexlet / Code Basics и участники · Исходный урок и решение · GNU AGPL v3. Упражнение сохранено; ограничения применения дополнены.