一、math模块和cmath模块
1.math模块支持整数、浮点数这些数值型的运算。cmath模块支持复数运算如下图所示:
math.sin()/math.cos()/math.tan()#可以求正弦、余弦、正切这样的三角函数
math.pi #pi也可以求pi这样的常数,即圆周率
math.log(x,a) #求对数比如以a为底的x的对数
math.pow(x,y)#可以求平方如x的y次幂,x,y可以是浮点数
cmath.polar() #极坐标
cmath.rect() #笛卡尔坐标
cmath.exp(x)#以某个数为底的x次幂
cmath.log(x,a)#以a为底的x对数
cmath.log10(x)#以10为底的x的对数
cmath.sqrt(x)#x的平方根
二、decimal模块
1.decimal可以处理小数的固定精度的浮点值,python中的浮点数有些特殊,当用十进制浮点数表示一个数值时而内部用二进制保存时进度就不准确,比如下图所示:
>>> 0.1+0.1+0.1-0.3 #三个0.1相加减去0.3
5.551115123125783e-17#程序运算结果不为0而是得到一个很小的数,印证了上面的问题
>>>
2.引用decimal模块生成小数并做运算如下图所示:
>>> from decimal import Decimal
>>> Decimal('0.1')#这里的这个字符串'0.1'是一个十进制的表示,表示是一个定点精度的十进制数
Decimal('0.1')
#返回一个0.1的十进制数
>>> Decimal('0.1')+Decimal('0.2')+Decimal('0.3')-Decimal('0.3')
Decimal('0.3')
>>> Decimal('0.1')+Decimal('0.1')+Decimal('0.1')-Decimal('0.3')
#引用Decimal再做上图中的那个运算
Decimal('0.0')#得到结果为0.0跟数学中的运算结果一样了
>>>
三、fractions模块,fractions模块也叫有理数或者分数模块
1.引用fractions生成分数以及运算如下图所示:
>>> from fractions import Fraction
>>> Fraction(1,5)#1代表分子5代表分母
Fraction(1, 5) #表示5分之1
>>> from fractions import Fraction
>>> Fraction(1,5)/Fraction('0.25')#5分之1除以0.25
Fraction(4, 5)#结果为5分之4
>>>
2.浮点数转换为分数,尽管可以把浮点数转换为分数,在某些情况下,这么做会有不可避免的精度损失,因为这个数字在其最初的浮点形式上是不精确的,如下图所示:
>>> Fraction.from_float(1.75)#将浮点数1.75转换为分数
Fraction(7, 4)#结果是四分之七答案是对的
>>> Fraction.from_float(1.3)#将浮点数1.3转换为分数
Fraction(5854679515581645, 4503599627370496)#结果是一个很大的数比另一个很大的数而不是10分之13这里是因为十进制1.3转换为二进制时是一个无限循环小数再转成分数就不会得到10分之13这样的结果
>>>
四、random模块也叫随机数模块
1.是因为计算机中的随机函数是按照一定算法模拟产生的,其结果是确定的,可预见的所以并不是真正的随机数而是称之为伪随机数。
2.随机数种子:随机种子相同,随机数的序列也是相同的,设置随机数种子语法如下图:
random.seed(a=None)#指定一个种子,种子类型可以选择
随机数就是就随机数种子中取出的数。种子就是个序号,这个序号交给一个数列管理器,通过这个序号,你从管理器中取出一个数列,这个数列就是你通过那个序号得到的随机数。
但这个随技术并不真正随机。因为它是通过某个算法的得到。也就是说你给数列管理器同一个序号将得到同样一个“随机”数列。
也就是说种子和随机数列是一一对应的。{An}=f(x), x 就是种子,F()是算法,{An}是数列,这个数列看上去是随机的,这是因为An的通项很复杂。
例如:从1、2、3、4、5、6、7、8、9、0这十个数中随机取出一个数,取出的数是6的话,那么6就叫随机数。十个数字就叫随机数种子。如果是从1到50之间取数字,取出的数字叫随机数,这1到50那50个数字就叫随机数种子。
3.random模块中的一些函数:random()函数、uniform()函数、randint()函数、randrange()函数
3.1 random():可生成范围在0到1之间的随机浮点数包括0但不包括1如下图所示:
>>>import random
>>> random.random()
0.6872346492581858
3.2 uniform(x,y):生成指定范围的内的随机浮点数比如uniform(1,10)就会生成1到10之间的一个随机浮点数如下图所示:
>>>import random
>>> random.uniform(1,10)
8.453623244548394
>>>
3.3 randint(m,n):生成指定范围内的整数,如ranint(10,20)生成10到20之间的一个随机整数如下图所示:
>>>import random
>>> random.randint(10,20)#randint函数是一个闭区间,生成的随机数有可能会是10也有可能是20
16
>>>
3.4 randrange(a,b,c):可以在(a-b)范围内,按c递增的集合中随机选择一个数,有些类似切片a代表开始值b代表结束值c为步长,只是这里只取a到b之间的一个随机数包含a但不包含b,具体如下图所示:
>>>import random
>>> random.randrange(100,1000,2)
260
>>> random.randrange(100,1000,3)
475
>>>
3.5 getrandbits(k):生成k位的二进制的随机整数比如说k是8那么就会生成一个0-255之间的一个随机数因为2的8次方是256。如下图所示:
>>>import random
>>> random.getrandbits(8)
39
>>>
3.6 choice():从指定序列中随机选择一个元素,如下图所示:
sample():能指定每次随机元素的个数如下图所示:
shuffle():可以将可变序列中所有元素随机排序如下图所示:
>>>import random
>>> colors=['red','blue','gree','black'] #创建一个列表赋值给colors
>>> random.choice(colors)#将列表作为参数返回一个列表中的随机元素
'black'
>>> random.sample(colors,2)#将列表作为参数,然后指定要获取元素的个数
['black', 'red']
>>> random.shuffle(colors)#将列表作为参数,将列表中的元素重新排列,这里注意一点引用shuffle函数的时候参数必须是可变序列,不可变序列是能用,如元组、字符串等
>>> colors
['black', 'red', 'blue', 'gree']
>>>
网友评论