Написать функцию maxfun(), которая принимает переменное число параметров — числовую последовательность S, функцию F1 и, возможно, ещё несколько функций F2 … Fn. Возвращает она ту из функций Fi, сумма значений которой на всех элементах S наибольшая. Если таких функций больше одной, возвращается Fi с наибольшим i.
from math import * print(maxfun(range(-2,10), sin, cos, exp)(1))
Пояснение:
Значения синуса на целых числах от -2 до 9: -0.9093 -0.8415 0.0 0.8415 0.9093 0.1411 -0.7568 -0.9589 -0.2794 0.657 0.9894 0.4121
Их сумма: 0.204441
Значения косинуса: -0.4161 0.5403 1.0 0.5403 -0.4161 -0.99 -0.6536 0.2837 0.9602 0.7539 -0.1455 -0.9111
Их сумма: 0.545779
Значения ex: 0.1353 0.3679 1.0 2.718 7.389 20.09 54.6 148.4 403.4 1.097e+03 2.981e+03 8.103e+03
Их сумма: 12818.811265
Очевидно, последнее больше, значит maxfun() должен возвращать функцию exp. Применяем её к 1, получаем число e.
2.718281828459045
P.S. В моём решении тело функции занимает одну строку (с использованием max(), sum(), enumerate() — и одного почти не грязного трюка). Но это не догма, конечно.