E. Подготовка данных

Напишите функцию to_string, которая формирует из последовательности данных строку.
Функция должна принимать:

  • неопределённое количество данных;
  • необязательный параметр sep (по умолчанию пробел);
  • необязательный параметр end (по умолчанию \n).

Примечание

Ваше решение должно содержать только функции.
В решении не должно быть вызовов требуемых функций.

Пример

Ввод

result = to_string(1, 2, 3)

Вывод

result = '1 2 3\n'

Ввод

data = [7, 3, 1, "hello", (1, 2, 3)]
result = to_string(*data, sep=", ", end="!")

Вывод

result = '7, 3, 1, hello, (1, 2, 3)!'

Решение

Для решения этой задачи надо понимать, что мы можем получить на вход нашей функции любой количество данных любого типа, не обязательно однородных. Кроме того, можно вызвать функцию совсем без передаваемых данных. Можно сказать, что нас просят написать упрощенный аналог функции print().

Для того, чтобы обеспечить обработку различного количества входных параметров воспользуемся *args. Обратите внимание, что название нашей переменной может быть любым, совсем необязательно использовать пары *args/**kwargs.

Дальше перебираем содержимое нашей переменной любым удобным для нас способом, с помощью функции str() преобразуем наш объект в строковый тип данных и накапливаем в строку. между объектами вставляем содержимое строковой переменной, которую получили в параметре sep, а в конце добавляем то, что получили в параметре end.

Посмотреть код

Решение

Python
# Развернутый алгоритм

def to_string(*data, sep=' ', end='\n'):
    string = ''
    data = list(data)
    while data:
        item = data.pop(0)
        string += str(item)
        if data:
            string += sep
    return string + end

Решение

Python
# Свернутый в одну строку.

def to_string(*data, sep=' ', end='\n'):
    return sep.join(str(item) for item in data) + end
Подписаться
Уведомить о
guest
3 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
Ольга
Ольга
05.10.2024 17:29

Здравствуйте.
Вот еще такой вариант. Яндекс принял.

def to_string(*data, **kwargs):
    return kwargs.get(‘sep’‘ ‘).join(str(i) for i in data) + kwargs.get(‘end’‘\n’)

Ольга
Ольга
Ответить на  Сергей Клочко
05.10.2024 18:36

Да, поняла. Огромное спасибо за подробное объяснение.