将python代码优化为一个返回语句

2024-05-29 04:39:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我知道如何完成某项任务,但它需要我创建和定义两个完全不同的函数。我只想要那个原始函数和一个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)

所以总结一下我的问题:我想去掉avgdampavg函数,把它优化成一行。你知道吗

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)

有人能帮我吗?你知道吗


Tags: thelambda函数return定义def错误语句
1条回答
网友
1楼 · 发布于 2024-05-29 04:39:06

我正在逐步地经历这个过程:

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)

所以avgdampget的一个参数是一个函数,它应用于第二个值,所以我们需要在那里应用原始函数:

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)。你知道吗

相关问题 更多 >

    热门问题