python解二次函数 | 您所在的位置:网站首页 › 在线二次函数模拟器怎么用的 › python解二次函数 |
lambda 函数 最开始接触循环,我们就写了一个函数实现了1加到100。我们是这样写的: ```python my_sum = 0 for i in range(1,101): my_sum += i print(my_sum) ``` 就像上面写的一样,代码非常简短明朗就能实现我们的需求。但是如果我们需求变成1加到1000或者50加到100等等我们就需要用到def函数。 ```python def my_sum(x,y): res = 0 for i in range(x,y): res += i return res my_sum(50,101) #调用函数,返回3825 my_sum(1,1001) #调用函数,返回500500 ``` lambda函数写起来非常简单,不需要命名函数,可以直接输出结果.经常与一些高级函数结合使用: - lambda关键字后面跟参数,可以跟多个参数 - 参数后跟冒号,冒号后接的相当于return后面的内容 - lambda定义的是单行函数,如果需要复杂函数,还是应该选择普通函数 - lambda表达式中不能含有命令,而且仅限一条表达式 - 如果我们用lambda函数我们将两行搞定这件事情,如下: ```python from functools import reduce #python3.x以上需要导入reduce模块 reduce(lambda x,y:x+y,range(1,101))#正确返回结果5050 ``` map()函数 - map()是 Python 内置的高阶函数 - map函数一般第一个参数是一个函数,可以是内置函数,也可以是自定义函数;第二个参数一个可迭代对象 - map将接收的函数,依次作用在可迭代对象的每一个元素中中并返回一个map对象,类似于这种格式 - map对象可以转化成list,或者用遍历将他显示出来 ```python list(map(lambda x:x*2,[1,2,3])) #返回[2, 4, 6].此函数讲[1,2,3]中每个元素都按照lambda公式要求乘以2,并用list将他们转化成了列表格式 ``` ```python #利用map()函数与lambda结合,我们可以解决一个网红python题,找1000以内的水仙花数 #(“水仙花数”是一个三位数其各位数字的立方和等于该数本身) for i in range(100,1000): if sum(map(lambda x:int(x)**3,str(i)))==i: print(i) #这段简短代码可读性很高我就不一一细说了,你细品~ ``` 如果我们能结合自定义公式,那想找几位的水仙花数都非常easy啦,请看我的表演 ```python def shuixianhua(n): #自定义函数shuixianhua x = 10**(n-1) y = 10**n res = [] for i in range(x,y): if sum(map(lambda z:int(z)**n,str(i))) == i: res.append(i) return res ``` ```python shuixianhua(3) #返回[153, 370, 371, 407] shuixianhua(4) #返回[1634, 8208, 9474] ``` 递归函数 - 递归函数指函数体体内调用函数本身; - 使用递归函数,必须设定一个基线条件,就是满足这一条件时,直接返回一个值 以下是递归的经典案例: 1.阶乘问题:用我们之前所学的内容我们可以这样解决阶乘问题 ```python #思路:先定义res变量为n,在让其一次乘以1到n-1每一个数字 def jiecheng(n): res = n for i in range(1,n): res *= i return res jiecheng(3) #返回1*2*3的值,6 ``` - 如果用递归方法实现阶乘问题,我们首先要理清她的基线条件: - 1的阶乘为1 - 大于1的数字n,其阶乘为n依次乘以1到n-1 ```python def jc(n): if n == 1: #如果是1,返回1 return 1 else: return n * jc(n-1) #如果不是1,再次调用函数本身 jc(4) #返回1*2*3*4的值,24 ``` 2.幂问题 - 说到幂问题,要插播一个内置函数,pow(x,n),返回x的n次幂 - 然后再用普通姿势定义一个函数power,让他实现pow()的功能 ```python #思路将n个x相乘 def power(x,n): res = x for i in range(1,n): res *= x return res power(2,3) ``` - 如果用递归方法实现幂问题,我们首先要理清她的基线条件: - 1的0次方为1 ```python def power(x,n): if n == 0: #如果是0,返回1 return 1 else: return x * power(x,n-1) #如果不是0,再次调用函数本身 power(2,3) #返回8 ``` 3.用递归函数解决一元二次函数求解问题 ```python import math def func(a,b,c): delta = b**2-4*a*c x = -b/(2*a) if delta == 0: print("只有一个根{}".format(x)) elif delta > 0: x1 = x + math.sqrt(delta)/(2*a) x2 = x - math.sqrt(delta)/(2*a) print("有两个根,{},{}".format(x1,x2)) else: print("无实根") func(1,2,1) ``` |
CopyRight 2018-2019 实验室设备网 版权所有 |