저는 비공식적으로 파이썬 강좌 CS61A에서 Berkely를하고 있습니다. 제공된 템플릿의 맨 끝에 단 하나의 표현식 만 제공해야하는 간단한 할당으로 인해 나는 완전히 혼란 스럽습니다. 다음은 문제 코드입니다.파이썬의 한 줄만 쓰다
# HW 4 Q5. (fall 2012)
def square(x):
return x*x
def compose1(f, g):
"""Return a function of x that computes f(g(x))."""
return lambda x: f(g(x))
from functools import reduce
def repeated(f, n):
"""Return the function that computes the nth application of f, for n>=1.
f -- a function that takes one argument
n -- a positive integer
>>> repeated(square, 2)(5)
625
>>> repeated(square, 4)(5)
152587890625
"""
assert type(n) == int and n > 0, "Bad n"
return reduce(compose1, "*** YOUR CODE HERE ***")
repeated(square, 2)(5) # Sample run
나는이 작업을하기 위해 모든 것을 시도했습니다. 이 반환 명령은 다음과 같이 처리해야합니다.
return reduce(compose1, range(n))
나는 가까이 있지 않습니다. Compose1은 두 개의 args (f, g)를 취하며 둘 다 함수 여야합니다. 그러나 return 문에서 'compose1'을 호출하면 'compose1'은 'f'에 '0'을 사용하고 'g'에 'n'을 사용합니다. 그러나 'f'와 'g'는 'square'라는 함수 여야합니다.
내가 무엇이 누락 되었습니까?
여기에 제 암시가 있습니다. "f"의 'n 번째'응용 프로그램을 계산하려고합니다. 즉, 누락 된 코드에는 (f)와 (n)을 모두 포함해야합니다. 제안 된 return 문은'f'로 아무 것도하지 않습니다. ''n '번 실행하는 방법에 대해 생각해보십시오. –