1.4 函数

1.Python中定义函数的语法

#自定义函数的语法形式
def factorial(n):r = 1while n > 1:r *= nn -= 1return 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中编写递归函数
x,n = eval(input("请输入x和n的值:"))
def p(x,n):if n == 1: return xelse: 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数学建模入门【3】相关推荐

  1. 数学建模入门 方法及代码

    数学建模入门 数学模型 (1)原型与模型 模型是原型的替代物.(对原型提炼构造.) 模型不是原型,既简单于原型又高于原型. 模型的分类 数学模型是对特定对象,特定目的,根据特有的内在规律,做出一些必要 ...

  2. 【Python数学建模】SEIR传染病模型模型延伸-SEIDR模型(一),加入疫苗接种、政府管控、病毒变异等因素的影响

    目录 一. SEIR传染病模型 二. SEIR模型的延伸--SEIDR模型 三. 模型延伸--影响因素1:疫苗接种 四. 模型延伸--影响因素2:政府管控 五. 模型延伸--影响因素3:病毒变异 写在 ...

  3. python数学建模(二)线性规划2.实战(思路清晰\过程完整、详细)

    文章目录 (一)简单陈述本文章的内容 (二)线性规划例题(实战) 2.1 实战题目 2.2 符号规定和基本假设 2.3 模型的分析 2.4 模型的建立 2.5 模型一的求解和分析 2.5.1 (代码) ...

  4. Python数学建模系列(五):微分方程

    文章目录 前言 往期文章 1.微分方程分类 2.微分方程解析解 3.微分方程数值解 3.1 场线图与数值解 3.2 洛伦兹曲线与数值解 4.传染病模型 模型一:SI-Model 模型二:SIS mod ...

  5. python数学建模--绘图动态可视化图表

    目录 写在本博客的开篇 关于matplotlib绘图的两种模式 阻塞模式 交互模式 总结 绘制动态图的例子 二维折线图 结果演示 代码 三维折线图 结果演示 代码 三维散点图 结果演示 代码 写在本博 ...

  6. 简述数学建模的过程_数学建模入门知识分享(一):什么是数模

    0 一个不是那么标准的Introduction 2019年的美赛结束于1月29日,接近一年多对数学建模的不断学习,终于有了些数模的感触,这个系列就简单从几个方面比较系统的阐述一下数模的基本问题,本人在 ...

  7. 【MATLAB】数学建模入门方法综述

    数学建模入门方法综述

  8. Python数学建模系列(六):蒙特卡洛算法

    文章目录 前言 往期文章 1.蒙特卡洛算法 样例1 样例2 样例3 2.三门问题 3.M*M豆问题 结语 前言 Hello!小伙伴! 非常感谢您阅读海轰的文章,倘若文中有错误的地方,欢迎您指出-   ...

  9. python可以用来数学建模吗_怎么用Python数学建模:python数据建模工具

    怎么用Python数学建模 djcjfhfhhjdvjfhvfghhfgbdthhgdchfjfuivvh DSI方法在几何建模上的应用 本节叙述如何应用DSI方法来与曲面S相联系的二维图形图3.1) ...

  10. 【Python数学建模常用算法代码(二)之BP神经网络】

    Python数学建模常用算法代码(二) BP神经网络模型Python代码 import numpy as np import math import random import string impo ...

最新文章

  1. 不装客户端连接mysql_C#不安装oracle客户端,如何连接到oracle数据库
  2. (2.19)备份与还原--备份的原理与总结
  3. spring顾问包装通知
  4. 灯泡四个闪烁c语言程序设计教程课后答案,c语言编程题及答案4.doc
  5. python中fetchall函数_python中查询数据库时fetchone()函数和fetchall()函数的区别
  6. TCP连续ARQ协议和滑动窗口协议
  7. 补习系列(12)-springboot 与邮件发送
  8. 微型计算机电路基础第四版逻辑门,数字逻辑的电路基础——逻辑门.PDF
  9. nosql数据库之Redis概念及基本操作
  10. Angularjs在初始化未完毕时出现闪烁的解决办法
  11. 你需要启用steam社区界面功能以进行购买_STEAM播放器成了:不用买游戏就能单独购买游戏音轨...
  12. google浏览器常用插件整理
  13. 远程清卡失败服务器内部错误,​航天信息远程清卡失败怎么处理
  14. java-php-python-ssm演唱会购票系统计算机毕业设计
  15. ensp 移动主机搜索不到AP信道_H3C路由器GR2200 支持LAN/WAN切换,负载均衡 支持快速扩展无线AP 高性能企业级路由器_GR2200_支持LAN/WAN切换,负载均衡...
  16. Excel 中连续生成开始日期和结束日期之间的日期
  17. win10的JDK安装环境变量配置
  18. Kinect2.0 UI交互 InteractionManager脚本
  19. 重塑 Google 搜索、Android 13 新版发布,这届 I/O 大会为开发者带来了什么?
  20. nginx 地址重写

热门文章

  1. springboot集成微信APP支付V3最新版
  2. IDEA debug提示Connected to the target VM, address: ‘127.0.0.1:xxxxx‘, transport: ‘socket‘的原因
  3. AxureRP初体验
  4. 教师职称考计算机模块,2015教师职称计算机考试模块.doc
  5. 最值得收藏的 考研线性代数 全部知识点思维导图整理(张宇, 汤家凤), 附带惯用思维/做题技巧/易错点整理
  6. mysql触发器更新前触发_mysql触发器实例:更新前触发
  7. 湖南大学离散数学实验——代码(一)
  8. 商务数据分析与应用学习笔记
  9. MAC 下MySQL常用命令
  10. 算法学习第一天-搭建能运行算法第四版的代码