Напишите функцию product, принимающую, неопределенное количество позиционных и именованных параметров.
Каждую строку, переданную в качестве позиционного параметра, функция должна заменить на произведение значений именованных параметров, которые встретились в ней.
Результатом функции должен являться кортеж полученных чисел.
Если для строки не нашлось именованных параметров, то и в результатах она должна отсутствовать.
Примечание
В решении не должно быть вызовов требуемых функций.
Пример
Ввод
result = product("Ann", "Bob", A=2, n=7, b=3)Вывод
result = (14, 3)Ввод
result = product("Ann", "Bob", "Chuck", a=9, n=5, u=3, c=2, A=5)Вывод
result = (25, 6)Решение
В целом, не сильно сложная задача, чем-то похожа а предыдущую. Вас может смутить наличие в подсказке слов о том, что ключи могут пересекаться без явного указания, что делать в этом случае, но это как раз та ситуация, когда чем проще — тем лучше. просто учитываем все ключи, которые мы нашли в строке.
Посмотреть код
Решение
def product(*args, **kwargs):
results = []
keys = list(kwargs.keys())
for arg in args:
factors = []
for key in keys:
if key in arg:
factors.append(kwargs[key])
if factors:
prod = 1
for value in factors:
prod *= value
results.append(prod)
return tuple(results)