Как создать другую функцию, которая несколько раз примет исходную функцию

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

Вот пример:

from math import sin
f1 = fn(lambda x: "sin(%s)" % x, 5)
f2 = fn(lambda x: sin(x), 5)
print("%s = %f" % (f1("1"), f2(1)))
>>sin(sin(sin(sin(sin(1))))) = 0.587181
print("%s = %f" % (f1("2"), f2(2)))
>>sin(sin(sin(sin(sin(2))))) = 0.606464
print(fn(lambda x: sin(x), 0)(1000))
>> 1000

Вот что сделал я:

  from random import randint
  def celsius(a):
      return (5.0 / 9.0)*(a - 32)
  def fn(f,n):
      a = [[randint(1,1000) for j in range(f)] for i in range(n)]
      for i in range(f): 
          for j in range(n): 
              a[i][j] = celsius(a[i][j])
              return a
  print(fn(3,3))

Вот ошибки, на которые мне указали, но сам я не так понял условие задачи, помогите пожалуйста разобраться.

def fn(f,n):

Это должно работать с любой функцией, а не только с одной.

print(fn(3,3))

Первый аргумент - это функция, а не число.


Ответы (0 шт):