Sto facendo ufficiosamente un corso Python CS61A tramite Berkely, e sono assolutamente sconcertato da un semplice compito che richiede di fornire solo un'espressione alla fine del modello fornito. Ecco il codice problema:Arrestato da una riga di Python
# 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
Ho provato di tutto per farlo funzionare. Mi sembra che questo return stmt dovrebbe farlo:
return reduce(compose1, range(n))
Ma non sono nemmeno vicino. Compose1 richiede due argomenti (f, g) e questi dovrebbero essere entrambi funzioni. Ma quando l'istruzione return chiama 'compose1', 'compose1' usa '0' per 'f' e 'n' per 'g'. Ma "f" e "g" dovrebbero essere la funzione chiamata "square"
Cosa mi manca.
Ecco il mio suggerimento: stai cercando di "calcolare l'ennesima applicazione di' f' "- il che significa che il codice mancante deve includere (in qualche modo) sia' f' che 'n'. la tua dichiarazione di reso suggerita non fa nulla con 'f'. pensa a come avresti eseguito 'f' per' n' volte. –