python基础教程之数字处理(math)模块详解


Posted in Python onMarch 25, 2014

1.math简介

>>> import math
>>>dir(math)          #这句可查看所有函数名列表
>>>help(math)         #查看具体定义及函数0原型

2.常用函数

ceil(x) 取顶
floor(x) 取底
fabs(x) 取绝对值
factorial (x) 阶乘
hypot(x,y)  sqrt(x*x+y*y)
pow(x,y) x的y次方
sqrt(x) 开平方
log(x)
log10(x)
trunc(x)  截断取整数部分
isnan (x)  判断是否NaN(not a number)
degree (x) 弧度转角度
radians(x) 角度转弧度

另外该模块定义了两个常量:

e = 2.718281828459045
pi = 3.141592653589793

random

1.简介

random是用于生成随机数,我们可以利用它随机生成数字或者选择字符串

import random

2.常用函数

random.random()
用于生成一个随机浮点数:range[0.0,1.0)

>>> import random
>>> random.random()
0.999410896951364
random.uniform(a,b)

用于生成一个指定范围内的随机浮点数,a,b为上下限

只要a!=b,就会生成介于两者之间的一个浮点数,若a=b,则生成的浮点数就是a

>>> random.uniform(10,20)
13.224754825064881
>>> random.uniform(20,10)
14.104410713376437
>>> random.uniform(10,10)
10.0

random.randint(a,b)
用于生成一个指定范围内的整数,a为下限,b为上限,生成的随机整数a<=n<=b;

若a=b,则n=a;若a>b,报错

>>> random.uniform(10,10)
10.0
>>> random.randint(10,20)
15
>>> random.randint(10,10)
10
>>> random.randint(20,10)
Traceback (most recent call last):
……
ValueError: empty range for randrange() (20,11, -9)

random.randrange([start], stop, [,step])
从指定范围内,按指定基数递增的集合中获取一个随机数,基数缺省值为1

>>> random.randrange(10,100,5)
95
>>> random.randrange(10,100,5)
45

random.choice(sequence)
从序列中获取一个随机元素,参数sequence表示一个有序类型,并不是一种特定类型,泛指list,tuple,字符串等

>>> random.choice([1,2,3,4])
1
>>> random.choice([1,2,3,4])
3
>>> random.choice('hello')
'e'

random.shuffle(x[, random])
用于将一个列表中的元素打乱

>>> a = [1,2,3,4,5]
>>> random.shuffle(a)
>>> a
[4, 5, 2, 1, 3]
>>> random.shuffle(a)
>>> a
[3, 2, 5, 1, 4]

random.sample(sequence, k)
从指定序列中随机获取k个元素作为一个片段返回,sample函数不会修改原有序列

>>> a = [1,2,3,4,5]
>>> random.sample(a,3)
[1, 4, 5]
>>> random.sample(a,3)
[1, 2, 5]
>>> a
[1, 2, 3, 4, 5]

decimal

1.简介

默认,浮点数学缺乏精确性

decimal 模块提供了一个 Decimal 数据类型用于浮点数计算。相比内置的二进制浮点数实现 float这个类型有助于

金融应用和其它需要精确十进制表达的场合,
控制精度,
控制舍入以适应法律或者规定要求,
确保十进制数位精度,或者用户希望计算结果与手算相符的场合。
Decimal 重现了手工的数学运算,这就确保了二进制浮点数无法精确保有的数据精度。 高精度使 Decimal 可以执行二进制浮点数无法进行的模运算和等值测试。

2.使用

>>> from decimal import Decimal
>>> Decimal('0.1') / Decimal('0.3')
Decimal('0.3333333333333333333333333333')
>>> from decimal import getcontext
>>> getcontext().prec = 4 #设置全局精度
>>> Decimal('0.1') / Decimal('0.3')
Decimal('0.3333')   

fractions
分数类型

构造

>>> from fractions import Fraction
>>> Fraction(16, -10)  #分子分母
Fraction(-8, 5)
>>> Fraction(123)   #分子
Fraction(123, 1)
>>> Fraction('3/7')   #字符串分数
Fraction(3, 7)
>>> Fraction('-.125')  #字符串浮点数
Fraction(-1, 8)
>>> Fraction(2.25)  #浮点数
Fraction(9, 4)
>>> from decimal import Decimal
>>> Fraction(Decimal('1.1')) #Decimal
Fraction(11, 10)

计算

>>> from fractions import Fraction
>>> a = Fraction(1,2)
>>> a
Fraction(1, 2)
>>> b = Fraction('1/3')
>>> b
Fraction(1, 3)
>>> a + b
Fraction(5, 6)
>>> a - b
Fraction(1, 6)
Python 相关文章推荐
Python异常处理总结
Aug 15 Python
python实现忽略大小写对字符串列表排序的方法
Sep 25 Python
CentOS 6.5下安装Python 3.5.2(与Python2并存)
Jun 05 Python
Python 爬虫之Beautiful Soup模块使用指南
Jul 05 Python
django缓存配置的几种方法详解
Jul 16 Python
深入理解python中sort()与sorted()的区别
Aug 29 Python
Python for循环与range函数的使用详解
Mar 23 Python
pyqt5对用qt designer设计的窗体实现弹出子窗口的示例
Jun 19 Python
Tensorflow加载Vgg预训练模型操作
May 26 Python
python飞机大战游戏实例讲解
Dec 04 Python
pycharm + django跨域无提示的解决方法
Dec 06 Python
python scipy 稀疏矩阵的使用说明
May 26 Python
python操作摄像头截图实现远程监控的例子
Mar 25 #Python
python基础教程之字典操作详解
Mar 25 #Python
python基础教程之元组操作使用详解
Mar 25 #Python
python基础教程之简单入门说明(变量和控制语言使用方法)
Mar 25 #Python
python使用循环实现批量创建文件夹示例
Mar 25 #Python
python实现图片批量剪切示例
Mar 25 #Python
使用python实现strcmp函数功能示例
Mar 25 #Python
You might like
多人战的战术与战略
2020/03/04 星际争霸
php实现的漂亮分页方法
2014/04/17 PHP
ThinkPHP访问不存在的模块跳转到404页面的方法
2014/06/19 PHP
PHP之将POST数据转化为字符串的实现代码
2016/11/03 PHP
Yii2 批量插入、更新数据实例
2017/03/15 PHP
Yii框架自定义数据库操作组件示例
2019/11/11 PHP
用Javascript 获取页面元素的位置的代码
2009/09/25 Javascript
深入理解JavaScript系列(7) S.O.L.I.D五大原则之开闭原则OCP
2012/01/15 Javascript
JS实现简单的Canvas画图实例
2013/07/04 Javascript
jQuery基础知识小结
2014/12/22 Javascript
Jquery中巧用Ajax的beforeSend方法
2016/01/20 Javascript
JS模态窗口返回值兼容问题的完美解决方法
2016/05/28 Javascript
用JS实现图片轮播效果代码(一)
2016/06/26 Javascript
Vue.js教程之axios与网络传输的学习实践
2017/04/29 Javascript
nodejs利用ajax实现网页无刷新上传图片实例代码
2017/06/06 NodeJs
解决canvas画布使用fillRect()时高度出现双倍效果的问题
2017/08/03 Javascript
Bootstrap table表格初始化表格数据的方法
2018/07/25 Javascript
详解使用VueJS开发项目中的兼容问题
2018/08/02 Javascript
Layer弹出层动态获取数据的方法
2018/08/20 Javascript
浅谈vue加载优化策略
2019/03/19 Javascript
echarts大屏字体自适应的方法步骤
2019/07/12 Javascript
详解微信小程序自定义组件的实现及数据交互
2019/07/22 Javascript
layui自定义工具栏的方法
2019/09/19 Javascript
微信小程序getLocation 需要在app.json中声明permission字段
2020/03/03 Javascript
JavaScript实现横版菜单栏
2020/03/17 Javascript
[03:49]显微镜下的DOTA2第十五期—VG登基之路完美团
2014/06/24 DOTA
[02:17]DOTA2亚洲邀请赛 RAVE战队出场宣传片
2015/02/07 DOTA
对numpy中的transpose和swapaxes函数详解
2018/08/02 Python
如何用PyPy让你的Python代码运行得更快
2020/12/02 Python
南京某公司笔试题
2013/01/27 面试题
高中生学习生活的自我评价
2013/10/09 职场文书
团委书记的竞聘演讲稿
2014/04/24 职场文书
2016高考感言
2015/08/01 职场文书
奖学金申请书(范文)
2019/08/14 职场文书
USB TYPE-C 或将成为所有智能手机充电标准
2022/04/21 数码科技
Windows和Linux上部署Golang并运行程序
2022/04/22 Servers