Напишите функцию 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)Решение
От нас требуется принять позиционные и именованные параметры, перебрать все позиционные и если порядковый номер параметра (аргумента функции) кратен длине какого-нибывдь из именованных параметров, увеличить его знаение на величину, соответствующую этому именованному параметру.
Решение состоит в том, чтобы пробежаться по всем именованным параметрам и во вложенном цикле перебрать все позиционные параметры, кратные длине именованного и увеличить их на соответствующее значение.
Посмотреть код
Решение
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)