大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
我课程中的部分代码(除没写):
在紫阳等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供网站设计、网站建设 网站设计制作按需定制网站,公司网站建设,企业网站建设,品牌网站建设,全网营销推广,外贸网站制作,紫阳网站建设费用合理。
def f_add(a,b):
return a+b
def f_mul(a,b):
return a*b
def f_sub(a,b):
return a-b
def g1(f,a,b):
return f(a,b)
a,b,c,d = 1,2,3,4
print g1(f_sub, g1(f_mul, g1(f_add,a,b), c), d), g1(f_mul, g1(f_add,a,b), g1(f_sub,c, d))
对python感兴趣可以到这里了解一下:
study.163.com/course/courseMain.htm?courseId=1000035
1、编写乘法表函数
def buildMulTable():
for i in range(1, 10):
for j in range(1, i + 1):
print('{}x{}={}\t'.format(j, i, i * j), end='')
print()
buildMulTable()
2、运行结果
1x1=1
1x2=2 2x2=4
1x3=3 2x3=6 3x3=9
1x4=4 2x4=8 3x4=12 4x4=16
1x5=5 2x5=10 3x5=15 4x5=20 5x5=25
1x6=6 2x6=12 3x6=18 4x6=24 5x6=30 6x6=36
1x7=7 2x7=14 3x7=21 4x7=28 5x7=35 6x7=42 7x7=49
1x8=8 2x8=16 3x8=24 4x8=32 5x8=40 6x8=48 7x8=56 8x8=64
1x9=9 2x9=18 3x9=27 4x9=36 5x9=45 6x9=54 7x9=63 8x9=72 9x9=81
可以把类当做参数传入到函数里,在函数里进行实例化。
把类A当做参数传入get_instance_from_class。在get_instance_from_class中对A进行实例化,获得其实例,并返回。
class A:
def __init__(self):
print "I am a A instance."
def print_myself(self):
print "print myself."
def main():
def get_instance_from_class(a):
return a()
a = get_instance_from_class(A)
a.print_myself()
if __name__=="__main__":
main()
1. 比较运算符:
如果比较式成立,返回True;不成立,则返回False。
常见的比较运算符如下:
除了简单的两值相比之外,比较运算符还支持比较复杂的比较。
(1)多条件比较:
可以先给变量a赋值,然后做多条件比较。
1 a = 3
2 print(1 a 5)
(2)变量的比较:
给变量a和变量b分别赋值,进行比较。
1 a = 3
2 b = 3
3 print(a != b)
4
5 s1 = 'duwangdan'
6 s2 = 'DuWangDan'
7 print(s1 == s2)
(3)函数结果的比较:
1 print(abs(-1) len('duwagndan'))
2 # abs():返回输入参数的绝对值
在比较运算中有一些需要留意的小问题:
不同类型的对象不能用“、=、、=”进行比较,但可以用“==、!=”做比较。
1 print(21 == len('duwangdan'))
在文章开头说过,True对应的是1,False对应的是0。看下面这个例子,False+True其实相当于0+1:
1 print(False + True False + False)
2. 成员运算符:
成员运算符的关键词是“in”,判断一个元素是否在某一个列表中。运行如下程序后,可得到反馈结果。
1 a = 1
2 b = 'beautiful'
3 album = [1,'beautifully',False,7]
4 # 创建列表,命名该列表为album
5 print(a in album)
6 print(b in album
当album=[]时,表示该列表为空。
如果想在album中新增内容,可以用append方法来实现。新增后,会在列表末尾显示新增的内容。
1 album = [1,'beautifully',False,7]
2 album.append('Wow')
3 # 用append()方法在album中新增内容
4 print(album)
3. 身份运算符:
身份运算符是用来比较两个对象是否是同一个对象,而之前比较运算符中的“==” 则是用来比较两个对象的值是否相等。
身份运算符主要用“is、is not”来判断。
1 a = 'duwangdan'
2 b = 'duwangdan'
3 print(a is b)
4 print(a is not b)
4. 布尔运算符:
在Python中有3种布尔运算符:and、or、not。
如下例子,返回结果分别为:False、True、True。
1 print(1 2 and 1 0)
2 print(1 2 or 1 0)
3 print(not False)
概要等式运算函数中参数的定义与调用定义函数时*的作用:out定义函数时:**OUTOUT调用函数时,和*均是为了分配参数用的调用函数时:*:调用函数时:**:
概要
关于""和"*"两个特殊符号的区别,首先在python中是没有指针的,与C++有很大的不同。
等式运算
python中常用的乘法运算符*
3*7
21
l=[2 * i for i in range(100) ]
l
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98, 100, 102,
104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 166, 168, 170, 172, 174, 176, 178, 180, 182, 184, 186, 188, 190, 192, 194, 196, 198]
函数中参数的定义与调用
如果在定义函数时,代表收集参数,*代表收集关键字参数。
定义函数时*的作用:
def symbols(*params):
print(params)
out
symbols(1,2,3)
(1,2,3)
此时*是将调用时提供的所有值,放在一个元组里。
这种情况下,在函数定义时的形参里的*params后面,就最好不要再加入别的形参了,比如你定义成 def symbols(*params,x) ,调用的时候symbols(1,2,3),就会报错。因为这样python分不清哪个数据是给params的。如果你非要这么定义也行,不过在调用的时候,必须显示的指出哪个值是给x的。比如symbols(1,2,x=3),通过这种方式调用才不会出错。
定义函数时:**
对于之前参数是*params的情况,symbols并不能传入关键字参数。仍然采取这种方式定义时:会报错
def symbols1(*params):
print(params)
OUT
symbols1(x=1,y=2,z=3)
Traceback (most recent call last):
File "stdin", line 1, in module
TypeError: symbols1() got an unexpected keyword argument 'x'
报错
因为*号并不会收集关键字参数。所以需要如下方式修改,采用两个星号:
def symbols2(**params):
print(params)
这样调用symbols2就不会有问题:
OUT
symbols2(x=1,y=2,z=3)
{'z'=3,'x'=1,'y'=2}
以上输出得到一个字典。字典中元素的先后顺序取决于你的环境。
调用函数时,和*均是为了分配参数用的
调用函数时:*:
例如,还是刚刚那个print函数
def symbols(x,y):
print(x)
print(y)
两个形参,如果只想传入一个形参呢
对,“调用函数时分配参数”跟“定义函数时收集参数”,反过来了!
假设你还有一个元组:
params=(1,2)
可以通过如下方式调用symbols函数:
symbols(*params)
就可以输出:
1
2
调用函数时:**:
和上面*时一样,只是分配的是字典。
params={'x':1,'y':2}
可以通过如下方式调用symbols函数:
symbols(**params)
就可以输出:
1
2
##最小二乘法
import numpy as np ##科学计算库
import scipy as sp ##在numpy基础上实现的部分算法库
import matplotlib.pyplot as plt ##绘图库
from scipy.optimize import leastsq ##引入最小二乘法算法
'''
设置样本数据,真实数据需要在这里处理
'''
##样本数据(Xi,Yi),需要转换成数组(列表)形式
Xi=np.array([6.19,2.51,7.29,7.01,5.7,2.66,3.98,2.5,9.1,4.2])
Yi=np.array([5.25,2.83,6.41,6.71,5.1,4.23,5.05,1.98,10.5,6.3])
'''
设定拟合函数和偏差函数
函数的形状确定过程:
1.先画样本图像
2.根据样本图像大致形状确定函数形式(直线、抛物线、正弦余弦等)
'''
##需要拟合的函数func :指定函数的形状
def func(p,x):
k,b=p
return k*x+b
##偏差函数:x,y都是列表:这里的x,y更上面的Xi,Yi中是一一对应的
def error(p,x,y):
return func(p,x)-y
'''
主要部分:附带部分说明
1.leastsq函数的返回值tuple,第一个元素是求解结果,第二个是求解的代价值(个人理解)
2.官网的原话(第二个值):Value of the cost function at the solution
3.实例:Para=(array([ 0.61349535, 1.79409255]), 3)
4.返回值元组中第一个值的数量跟需要求解的参数的数量一致
'''
#k,b的初始值,可以任意设定,经过几次试验,发现p0的值会影响cost的值:Para[1]
p0=[1,20]
#把error函数中除了p0以外的参数打包到args中(使用要求)
Para=leastsq(error,p0,args=(Xi,Yi))
#读取结果
k,b=Para[0]
print("k=",k,"b=",b)
print("cost:"+str(Para[1]))
print("求解的拟合直线为:")
print("y="+str(round(k,2))+"x+"+str(round(b,2)))
'''
绘图,看拟合效果.
matplotlib默认不支持中文,label设置中文的话需要另行设置
如果报错,改成英文就可以
'''
#画样本点
plt.figure(figsize=(8,6)) ##指定图像比例: 8:6
plt.scatter(Xi,Yi,color="green",label="样本数据",linewidth=2)
#画拟合直线
x=np.linspace(0,12,100) ##在0-15直接画100个连续点
y=k*x+b ##函数式
plt.plot(x,y,color="red",label="拟合直线",linewidth=2)
plt.legend(loc='lower right') #绘制图例
plt.show()