我想出了如何完成某项任务,但它需要我创建和定义两个完全独立的函数。我只想拥有那个原始函数和一个返回语句,但我不知道该怎么做。
我有什么:
def fp_golden_ratio_avgdamp():
return fp(avgdamp(lambda x: 1 + 1/x), 1.0)
def avgdamp(f):
return lambda x: avg(float(x), f(x))
def avg(x, y):
return (x + y) / 2.0
当您调用fp_golden_ratio_avgdamp()
打印时:
(25, 1.6180339887498754)
fp
函数是 100% 工作的东西,它接受lambda x: 1 + 1/x
和 1.0 的设置值作为某个错误点,它打印
(32, 1.6180339887499087)
因此,我尝试传递给该 fp 函数的是首先通过其他两个函数的内容。
我对此的尝试是:
def fp_golden_ratio_avgdamp():
return fp( lambda x:( ((float(1 + 1/x) + (1 + 1/x)) / 2.0) ) , 1.0)
但这导致了与我要做的同样的事情
return fp(lambda x: 1 + 1/x, 1.0)
哪个打印这个:
(32, 1.6180339887499087)
所以总结一下我的问题:我想摆脱avgdamp
和avg
功能,只是将其优化为单行。
def fp_golden_ratio_avgdamp():
return fp( '''do something with this (lambda x: 1 + 1/x) that is the same computation of the avgdamp and avg functions''', 1.0)
有人可以帮助我吗?
我正在逐步完成此操作:
def avgdamp(f):
return lambda x: avg(float(x), f(x))
def avg(x, y):
return (x + y) / 2.0
这可以很容易地放入一个功能中:
def avgdamp(f):
return lambda x: (float(x) + f(x)) / 2.0
现在这应该与fp_golden_ratio_avgdamp
相结合:
def fp_golden_ratio_avgdamp():
return fp(avgdamp(lambda x: 1 + 1/x), 1.0)
所以avgdamp
得到一个参数,它是一个函数,它应用于第二个值,所以我们需要在那里应用原始函数:
def fp_golden_ratio_avgdamp():
return fp((lambda x: (float(x) + 1 + 1/x) / 2.0), 1.0)
请注意,您对两个值都应用了1+1/x
函数:
return fp( lambda x:( ((float(1 + 1/x) + (1 + 1/x)) / 2.0) ) , 1.0)
这是一个问题,因为((float(1 + 1/x) + (1 + 1/x)) = 2 * (1 + 1 / x)
(如果x
是浮点数),那么平均值很简单:(1+1/x)
.