当前位置:   article > 正文

第5关:Lambda 表达式_本关直接要求填入代码,然后运行程序并根据程序输出的结果判断填入的代码是否正确

本关直接要求填入代码,然后运行程序并根据程序输出的结果判断填入的代码是否正确
编程要求

本关的编程任务是补全 src/step5/step5.py 文件中的代码,完成函数diff(f),它返回函数f的导数。

本任务中,Δx 的值取 0.001 ,存放于变量 delX中。

本关涉及的 src/step5/step5.py 文件的代码框架如下:

 
  1. # coding:utf-8
  2. from math import sin, cos
  3. delX = 0.001
  4. x = float(input())
  5. def diff(f):
  6. #请在此添加代码,求出函数f的导数
  7. #********** Begin *********#
  8. #********** End *********#
  9. print ("%.2f"%(diff(sin)(x)))
测试说明

本关要求学习者直接填入代码,然后运行程序并根据程序输出的结果判断填入的代码是否正确。

本关测试样例如下:

测试输入: 0.1 预期输出: 1.00

测试输入: 2.4 预期输出: -0.74

 



 这道题很多初学者应该看不太懂,因为这里对lambda匿名函数还有一个用处没有说明。

Lambda表达式的主要用途有以下几个方面:

  1. 简化代码:Lambda表达式可以用于编写简单的函数体,避免编写完整的函数定义。
  2. 函数作为参数:Lambda表达式可以作为其他函数的参数,用于回调函数、排序函数等。
  3. 表达式求值:Lambda表达式可以用于进行简单的表达式求值,例如求和、平均数等。
  4. 增加代码可读性:对于一些简单的函数逻辑,使用Lambda表达式可以使代码更加紧凑和易于理解。

这里的diff(sin)(x)分别传入了匿名函数sin和x,所以这里的f()其实是匿名函数sin()。

所以这题还考察了回调函数。这里相关知识并没有说明,框架也给的莫名其妙,所以我一开始也没有看明白。

  1. # coding:utf-8
  2. from math import sin, cos
  3. delX = 0.001
  4. x = float(input())
  5. def diff(f):
  6. #请在此添加代码,求出函数f的导数
  7. #********** Begin *********#
  8. result = lambda x:(f(x + delX) - f(x - delX)) / (2 * delX)
  9. return result
  10. #********** End *********#
  11. print("%.2f"%(diff(sin)(x)))

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/392923
推荐阅读
  

闽ICP备14008679号