0
これは私のコードです。印刷時にエラーの原因を教えてください。関数composeは、関数の構成を計算することになっています。**またはpow()のサポートされないオペランドタイプ: 'function'および 'int'
最後の行f1(f2)
で
def compose(lst):
return acc(g, h, lst)
print(compose([lambda x:x**2,lambda y:2*y])(5))
def acc(f, v, lst):
if len(lst)==0:
return v
if len(lst)==1:
return f(v,lst[0])
return f(lst[0], acc(f,v,lst[1:]))
def h(f):
return f
def g(f1,f2):
return f1(f2)
しかし、私は作曲(following'printを印刷するときにエラーがまだ表示されます([ラムダX:X ** 2、ラムダY:
これはと等価である2 * y])) ' – Programmingfreak
これは、その行で起こるのは、エラーコードが実際に実行されるためです。 'def g(f1、f2):return f1(f2)'を見ると、f1とf2は何でもかまいません。その時点で、そのコードが失敗するかどうかを判断する方法はありません。 'f1 = lambda x:x ** 2'と' f2 = lambda:2 * y'というパラメータ値で関数 'g'が呼び出されたときだけエラーが発生します。 '(lambda:2 * y)** 2'を走らせて、あなたが見るエラーを引き起こします。 –
ありがとうございます!これは、関数 'g'の最後の行を' return lambda x:f1(f2(x)) 'に変更したときに働きました。 – Programmingfreak