DamiRocK

Python: return и функция truncate() с троеточием

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

Вернуть значение вызывающему коду

Return завершает текущий вызов функции и передаёт результат туда, где функция была вызвана. Это не то же самое, что print: возвращённую строку можно сохранить, соединить с другой или вывести позже.

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

Функция truncate принимает строку и количество сохраняемых символов. Она должна вернуть выбранный префикс с добавленными тремя точками:

def truncate(text, length):
    result = f"{text[:length]}..."
    return result

Проверка примеров

print(truncate("hexlet", 2))     # he...
print(truncate("it works!", 4))  # it w...

Срез начинается с начала и не включает индекс length. Вторая строка сохраняет пробел внутри префикса: первые четыре символа — i, t, пробел, w.

Не менять условие незаметно

В исходном решении троеточие добавляется всегда. Поэтому truncate("hi", 10) возвращает "hi...", а не "hi". Убирать точки для короткого текста было бы дополнительной функцией, не заданной этим упражнением.

При length=0 результат равен "...". Отрицательные значения наследуют обычную семантику среза, но не являются естественным «количеством символов»; для производственной функции договор об их обработке нужно задать отдельно.

После return

Обычные инструкции тела после безусловно выполненного return не исполняются. Поэтому сначала выполняют нужные вычисления, затем возвращают результат. Вместо двух строк можно сразу написать return text[:length] + "..."; оба варианта возвращают одинаковое значение.

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

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.