H. Странный рост

Напишите функцию grow, принимающую, неопределенное количество позиционных и именованных параметров.

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

Примечание

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

Пример

Ввод

result = grow(1, 2, 3, 4, 5, ab=7, dad=10)

Вывод

result = (1, 9, 13, 11, 5)

Ввод

result = grow(12, 5, 30, 60, 15, first=13, second=2, Bob=7)

Вывод

result = (21, 18, 52, 82, 35)

Решение

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

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

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

Решение

Python
def grow(*args, **kwargs):

    result = list(args)

    for name, value in kwargs.items():
        length = len(name)

        for pos in range(len(result)):
            if args[pos] % length == 0:
                result[pos] += value

    return tuple(result)
Подписаться
Уведомить о
guest
0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии