Python数学建模入门【3】

1.4 函数

1.Python中定义函数的语法

#自定义函数的语法形式
def factorial(n):
    r = 1
    while n > 1:
        r *= n
        n -= 1
    return r
print(factorial(5))

运行结果:

120

这里使用了python中有关函数的定义,形式如上,python中的:是格式要求,如果缺少的话会报错,除此之外,python用四个空格的缩进来表示代码块之间的缩进,例如define和while之间间隔四个空格,while和循环中的语句间隔同样为四个空格,python对于格式的要求很严格,在编码过程中要养成良好的习惯。

#求数字的p次方的和
def square_sum(n,p = 2):
    result = sum([i**p for i in range(1,n+1)])
    return (n,p,result)
print("1到%d的%d次方和为%d" %square_sum(10))

运行结果:

1到10的2次方和为385

2.可变参数的python函数

#可变参数的python函数
def add(*args):
    print (args ,end=' ')
    s = sum(args)
    return s
print("的和为%d"%add(10,12,6,8))

运行结果:

(10, 12, 6, 8) 的和为36

python中设置了可变参数的函数,例如我们想计算多个数的和的时候,想要输入多个数据,我们就可以采用上面的形式,用*名称来录入多个数据,可变参数函数会把输入的数据封装成一个元组,进行函数的运算。

3.关键字参数

#关键字参数
def person(name,age,**kw):
    print('name:',name,'age:',age,'others:',kw)
person('Michael',30)
person('Bob',35,city = 'Beijing')

运行结果:

name: Michael age: 30 others: {}
name: Bob age: 35 others: {'city': 'Beijing'}

这种方式避免了可变参数接受多个实参后捆绑成一个元组,通过关键字参数可以构造字典来实现对行参的单独访问,如图在所示的程序中,name 和 age是位置参数,两个必须要传入到对应的值,其他关键字参数则是会不断出现 。

4.参数传递

(1)

#参数传递

def fun(a,b):
    a,b = b,a 
    print('函数内交换后的值是:%d %d\n'%(a,b))
    return
a = 10;b = 5
print('调用函数前变量的值:%d %d\n' % (a,b))
fun(a,b)
print('调用函数后变量的值:%d %d\n' % (a,b))
#我们可以看到两个数值确实进行了交换,但是外部实参的值并没有改变

运行结果:

调用函数前变量的值:10 5

函数内交换后的值是:5 10

调用函数后变量的值:10 5

参数的传递方式有传值和传址两种。
传值的意思是说在函数中对变量进行的任何改变不会影响实际变量的值,类似于C语言中的形参和实参。
传址的意思则是说,会对地址中的内容直接改变使用同一个地址。

(2)

#参数传递的复合数据包
def fun(a,b,c):
    print("三个数的和为:",a+b+c)
seq = [1,2,3]; fun(*seq)
tup = (1,2,3); fun(*tup)
dic = {1:'a',2:'b',3:'c'};fun(*dic)
seta = {1,2,3}; fun(*seta)

运行结果:

三个数的和为: 6
三个数的和为: 6
三个数的和为: 6
三个数的和为: 6

运用*可以对不同数据类型中的每个元素进行相应的访问。

5.lambda函数使用

#lambda函数的使用示例
f = lambda n,m:sum([k**m for k in range (1,n+1)])
s = f(100,1)+f(50,2)+f(10,-1)
print("s=%10.4f"%(s))

运行结果:

s=47977.9290

6.递归python函数

Python数学建模入门【3】_第1张图片

#在python中编写递归函数
x,n = eval(input("请输入x和n的值:"))
def p(x,n):
    if n == 1: return x
    else: return x*(1-p(x,n-1))
v = p(x,n)
print("p(%d,%d)=%d"%(x,n,v))

运行结果:

请输入x和n的值:2,4
p(2,4)=-10

7.python中查看文档的方式

#python中导入模块的方式
import numpy 
help(numpy.random)

补充习题:

x = [1,2,3]
y = [-1,-2,-3]
list(zip(*zip(x,y)))

运行结果:

[(1, 2, 3), (-1, -2, -3)]

可以先自行推断结果,忘了的小伙伴可以去看看Python数学建模入门【2】中的解析。

Python数学建模入门【2】

你可能感兴趣的:(Python数学建模,python,开发语言,数学建模)