Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите с задачей на python

Тимур Течисов Ученик (109), на голосовании 11 месяцев назад
Реализуйте функцию truncate(), которая должна обрезать переданную строку до указанного количества символов, добавлять в конце многоточие и возвращать получившуюся строку. Подобная логика часто используется на сайтах, чтобы отобразить длинный текст в сокращенном виде.

Функция принимает два параметра:

Строка, которую нужно обрезать (параметр text)
Число символов, которые нужно оставить (параметр length)
Голосование за лучший ответ
V̲i̲s̲t̲a̲s̲t̲e̲r̲ Искусственный Интеллект (264704) 1 год назад
 def truncate(text, length): 
return text if len(text) <= length else text[:length] + '...'

# demo
original_text = "Это длинный текст, который нужно обрезать."
truncated_result = truncate(original_text, 20)
print(truncated_result)
ильяУченик (186) 8 месяцев назад
Предлагаю обрезать часть кода, которая:
* бесполезна,
когда значение переменной text будет длинным (как в вашем Demo).
* приведет к неверному выводу,
если значение переменной text окажется слишком коротким.
--
(наверное вы тоже это заметили, но уже не было возможности редактировать ответ):
 def truncate(text, length):  
̶ ̶r̶e̶t̶u̶r̶n̶ ̶t̶e̶x̶t̶ ̶i̶f̶ ̶l̶e̶n̶(̶t̶e̶x̶t̶)̶ ̶<̶=̶ ̶l̶e̶n̶g̶t̶h̶ ̶e̶l̶s̶e̶ text[:length] + '...'
ильяУченик (186) 8 месяцев назад
Переписал свой комментарий версия №2 (финальная).

Предлагаю обрезать часть кода, которая:
* бесполезна если
 len(text) > length  

* приведет к неверному выводу, если
 len(text) <= length   
--
(наверное вы тоже это заметили, но уже не было возможности редактировать ответ):
 # из строки:  
return text if len(text) <= length else text[:length] + '...'
# оставляем только:
text[:length] + '...'
илья Ученик (186) 8 месяцев назад
Три варианта решения задачи.
Все они рабочие.
(на вариант №3 PyCharm ненавязчиво ворчит, но все равно выполняет).
 # №1 (интерполяция)(f-строки) 
def truncate(text, length):
return f'{text[:length]}...'


# demo
print(truncate('Проверка', 2)) # вывод Пр...
 # №2  
def truncate(text, length):
return text[:length] + '...'


# demo
print(truncate('Проверка', 2)) # вывод Пр...
 # №3 (через переменные)   
# здесь объявляем переменные
text = 'Проверка'
length = 2


def truncate(text, length):
# можно заменить f-строку на обычную
# тогда закомментируйте f-строку
# а обычную раскомментируйте
# return text[:length] + '...'
return f'{text[:length]}...'


# demo
print(truncate(text, length)) # вывод Пр.
Похожие вопросы