DamiRocK

Python: условие if и приведение короткой команды к нижнему регистру

Функция normalize_command() меняет регистр только для строк короче восьми символов. Проверяем строгую границу и неизменность длинного текста.

Выполнить действие при условии

If проверяет истинность выражения. Только при истинном результате выполняется блок с отступом. После блока программа продолжает работу со следующей инструкцией, если внутри не произошёл return или другое управление потоком.

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

Приведите команду к нижнему регистру только тогда, когда её длина меньше восьми символов. В остальных случаях верните исходную строку:

def normalize_command(command: str) -> str:
    if len(command) < 8:
        command = command.lower()
    return command

Проверка трёх длин

normalize_command("HELP") возвращает "help". Строка из семи заглавных букв тоже изменится. Строка из восьми символов уже не удовлетворяет условию < 8 и останется прежней.

Именно восьмёрка — полезная граничная проверка: замена < на <= изменила бы договор функции.

Где находится return

Return стоит после if на уровне тела функции, поэтому значение возвращается в обоих случаях. Если случайно поместить его внутрь if, длинная команда дойдёт до конца функции и вернёт None вместо строки.

Неизменяемый объект и локальное имя

Метод lower создаёт строковый результат, а присваивание связывает локальное имя command с ним. Исходная строка у вызывающего кода не изменяется на месте. Чтобы использовать нормализованный вариант, вызывающая сторона должна принять возвращённое значение.

Пустая строка имеет длину ноль и проходит условие; её lower остаётся пустой строкой. Функция не проверяет, существует ли такая команда в приложении: она реализует только правило регистра по длине.

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.