我知道如何完成某项任务,但它需要我创建和定义两个完全不同的函数。我只想要那个原始函数和一个return语句,但我不知道怎么做。你知道吗
我所拥有的:
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)
有人能帮我吗?你知道吗
我正在逐步地经历这个过程:
这可以很容易地放在一个功能中:
现在这应该与
fp_golden_ratio_avgdamp
结合起来:所以
avgdamp
get的一个参数是一个函数,它应用于第二个值,所以我们需要在那里应用原始函数:请注意,您对这两个值应用了
1+1/x
函数:这是一个问题,因为
((float(1 + 1/x) + (1 + 1/x)) = 2 * (1 + 1 / x)
(如果x
是一个浮点数),然后平均值就是:(1+1/x)
。你知道吗相关问题 更多 >
编程相关推荐