DamiRocK

Python: цепочка среза и strip() для фрагмента журнала

Берём символы с пятого по пятнадцатый, очищаем края и считаем длину без промежуточных переменных. Проверяем порядок операций и тип каждого результата.

Следующая операция использует предыдущий результат

В " hExLeT ".strip().lower() сначала получается "hExLeT", затем "hexlet". Цепочка читается слева направо. Внешний вызов функции, например len, выполняется после вычисления своего аргумента.

Задание источника

В строке журнала возьмите символы с пятого по пятнадцатый включительно, удалите пробельные символы по краям и выведите длину. Не создавайте промежуточных переменных:

text = "log \t\n loading\t\n done"
print(len(text[4:15].strip()))

Пятый символ имеет индекс 4, пятнадцатый — 14, поэтому исключаемая правая граница среза равна 15. После strip остаётся "loading", длина — 7.

Проверка по стадиям

Срез содержит начальные табуляцию, перевод строки и пробел, слово loading и завершающую табуляцию. Метод strip удаляет только края. Внутренние пробелы, если бы они были частью слова или сообщения, не исчезли бы автоматически.

При отладке можно временно сохранить стадии отдельно, но окончательное решение следует учебному ограничению одной составной строки.

Тип ограничивает продолжение цепочки

После strip результат — строка, после len — целое число. Поэтому добавлять к результату len строковый метод lower нельзя. Это не означает, что числа вообще не имеют методов: они просто предоставляют другой набор операций. Уточнение исправляет слишком широкую формулировку источника.

Порядок может менять смысл

Операция text.strip()[4:15] сначала меняет краевые позиции, а затем выбирает символы уже другой строки. Она не является автоматическим эквивалентом text[4:15].strip(). Сначала решите, к какой версии текста относятся индексы условия, и только после этого стройте цепочку.

Hexlet / Code Basics и участники · Исходный урок и решение · GNU AGPL v3. Решение сохранено; границы среза и типы результатов пояснены.

Reading preferences

Appearance
Contrast
More options

Saved only in this browser. Your device’s reduced-motion setting is always respected. Browser zoom works throughout the site.