在上一篇《手把手陪您学Python》11——字符串的格式化输出中,我们用了较大的篇幅,学习了字符串的格式化输出方法。再加上之前字符串标识、索引、切片、运算和函数等内容,关于Python中字符串的内容我们就基本上介绍完了,大家可以通过点击下方的链接进行学习或者回顾。
这一篇,将给大家介绍Python中关于数字的内容。
数字大家都很了解,但因为计算机语言毕竟与我们的自然语言或者数学符号有所差别,所以我们要通过这一篇的学习,了解一下Python中的数字都有哪些运算方式,以及这些运算方式是通过什么样的代码来实现的。
1、数字的类型
学习Python的好处之一就是它的语言非常精简。以数字的类型为例,对于其它语言中区分的整形(整数)、长整型(特别大的整数)、单精度浮点型(小数)、双精度浮点型(更大、小数位更多的小数),Python只用整形(整数)和浮点型(小数)进行了区分,不需要我们再根据数字的大小或者精度去选择数字类型了。
包括整形和浮点型,Python的数字类型一共有三种:
整型(int):就是我们平时说的整数,包括正整数和负整数,没有大小的限制。
浮点型(float):由整数和小数组成,也可以用科学计数法表示,既没有大小的限制,也没有精度(小数位个数)的限制。
复数(complex):由实数部分和虚数部分组成,可以用a + bj,或者complex(a,b)表示, 复数的实部a和虚部b都是浮点型。(非学霸可以忽略。。。)
2、数字类型的转换
说到数字类型的转换,我们要先来学习一个新的函数type()。type()是Python中用来检测对象类型的函数,非常非常有用。比如我们之前学习的字符串,就可以使用type()进行检测。
In [1]: a = 'Hello World!'
type(a)
Out[1]: str
str就是代表字符串的符号,同样的,int和float就是代表数字类型的符号。
In [2]: b = 2019
type(b)
Out[2]: int
In [3]: c = 2019.7
type(c)
Out[3]: float
有一点需要说明,虽然同样都是2019,但是'2019'和2019却是完全不同的两种类型。
In[4]: d = '2019' # 因为多了字符串标识符'',所以2019不再是整型数字,而是字符串
type(d)
Out[4]: str
数字类型的转换就是在字符串、整型、浮点型之间的转换。如果涉及到精度的改变,不采用四舍五入的规则,直接截取。此时,str、int、float就不再是代表类型的符号了,而是代表需要转换成某种类型的函数。
In [5]: e = int('2019')
e
Out[5]: 2019
In [6]: type(e)
Out[6]: int
In [7]: f = str(2019)
f
Out[7]: '2019'
In [8]: type(f)
Out[8]: str
In [9]: g = int(2019.7) # 直接截取整数部分2019
g
Out[9]: 2019
In [10]: type(g)
Out[10]: int
In [11]: h = float(2019) # 整型转换成浮点型,增加小数位
h
Out[11]: 2019.0
In [12]: type(h)
Out[12]: float
In [13]: i = float('2019') # 整数字符串转换成浮点型,也增加小数位
i
Out[13]: 2019.0
In [14]: type(i)
Out[14]: float
In [15]: j = str(2019.7)
j
Out[15]: '2019.7'
In [16]: type(j)
Out[16]: str
以上实例总结起来就是str、int、float等类型可以相互转化,int或str的整数转换成float时会补上小数位,float转换成int时会直接截取整数部分。
3、数字的运算
Python的数字运算一共有7种,分别是加、减、乘、除、幂、取模(除后取余数)和取整(除后向下取整数)。对应这7种运算使用的符号以及运算实例如下:
In [17]: a = 11
b = 3
In [18]: a + b
Out[18]: 14
In [19]: a - b
Out[19]: 8
In [20]: a * b
Out[20]: 33
In [21]: a / b
Out[21]: 3.6666666666666665
In [22]: a ** b # a的b次幂
Out[22]: 1331
In [23]: a % b # 11除3等于3,余数为2
Out[23]: 2
In [24]: a // b # 11除3等于3余2,向下取整数部分为3
Out[24]: 3
除了数字运算,其实还有比较运算,这部分我们放在下一篇一起来讲。
4、数字的函数
数字的函数与我们数学中的概念以及excel中的用法类似,大家可以参考下表,了解一下都有哪些数学与三角函数可以使用。这里就不一一举例了,只选择几个常用函数作为示例。
数学函数:
函数 | 返回值 ( 描述 ) |
abs(x) | 返回数字的绝对值,如abs(-10) 返回 10 |
ceil(x) | 返回数字的上入整数,如math.ceil(4.1) 返回 5 |
cmp(x, y) | 如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1。 Python 3 已废弃,使用 (x>y)-(x<y) 替换。 |
exp(x) | 返回e的x次幂(ex),如math.exp(1) 返回2.718281828459045 |
fabs(x) | 返回数字的绝对值,如math.fabs(-10) 返回10.0 |
floor(x) | 返回数字的下舍整数,如math.floor(4.9)返回 4 |
log(x) | 如math.log(math.e)返回1.0,math.log(100,10)返回2.0 |
log10(x) | 返回以10为基数的x的对数,如math.log10(100)返回 2.0 |
max(x1, x2,...) | 返回给定参数的最大值,参数可以为序列。 |
min(x1, x2,...) | 返回给定参数的最小值,参数可以为序列。 |
modf(x) | 返回x的整数部分与小数部分,两部分的数值符号与x相同,整数部分以浮点型表示。 |
pow(x, y) | x**y 运算后的值。 |
round(x [,n]) | 返回浮点数x的四舍五入值,如给出n值,则代表舍入到小数点后的位数。 |
sqrt(x) | 返回数字x的平方根。 |
三角函数:
函数 | 描述 |
acos(x) | 返回x的反余弦弧度值。 |
asin(x) | 返回x的反正弦弧度值。 |
atan(x) | 返回x的反正切弧度值。 |
atan2(y, x) | 返回给定的 X 及 Y 坐标值的反正切值。 |
cos(x) | 返回x的弧度的余弦值。 |
hypot(x, y) | 返回欧几里德范数 sqrt(x*x + y*y)。 |
sin(x) | 返回的x弧度的正弦值。 |
tan(x) | 返回x弧度的正切值。 |
degrees(x) | 将弧度转换为角度,如degrees(math.pi/2) , 返回90.0 |
radians(x) | 将角度转换为弧度 |
大家在上表中看到的math.就是使用的math数学函数库中的函数,可以通过import math来实现。
In [25]: import math
In [26]: abs(-5)
Out[26]: 5
In [27]: math.floor(-5.8)
Out[27]: 5
In [28]: pow(11, 3) # 和11**3的作用一样
Out[28]: 1331
5、数字常量
在Python的math数学函数库中,有两个数字常量,一个是圆周率π,一个是自然常数e。这两个常数也需要先导入数学函数库math才能够使用。
In [29]: math.pi
Out[29]: 3.141592653589793
In [30]: math.e
Out[30]: 2.718281828459045
In [31]: math.sin(math.pi/2) # math.pi用于导入math数学函数库中的π值
Out[31]: 1.0
6、随机函数
最后介绍的这个函数非常重要。如果大家还记得,在《手把手陪您学Python》10——字符串的函数一文中,我们就应用随机函数,实现了投骰子后随机结果的产生。随机函数不仅在很多领域和算法中都会应用到随机函数,就算是我们后面将要编写的小游戏,也离不开随机函数的应用。
常用的随机函数包括如下:
函数 | 描述 |
choice(seq) | 从序列的元素中随机挑选一个元素,比如random.choice(range(10)),从0到9中随机挑选一个整数。 |
randrange ([start,] stop [,step]) | 从指定范围内,按指定基数递增的集合中获取一个随机数,基数缺省值为1 |
random() | 随机生成下一个实数,它在[0,1)范围内。 |
seed([x]) | 改变随机数生成器的种子seed。如果你不了解其原理,你不必特别去设定seed,Python会帮你选择seed。 |
shuffle(lst) | 将序列的所有元素随机排序 |
uniform(x, y) | 随机生成下一个实数,它在[x,y]范围内。 |
randint(x, y) | 随机生成下一个整数,它在[x,y]范围内。 |
使用随机函数前,需要先导入随机函数库random。
In [32]: import random
In [33]: random.choice([1, 2, 3, 4, 5, 6, 7, 8, 9]) # 从序列中随机选择一个元素
Out[33]: 7
In [34]: random.randrange(0, 100, 5) # 在从0开始、按5递增到100的序列中,随机选择一个数
Out[34]: 80
In [35]: random.random() # 产生一个0到1之间的随机实数
Out[35]: 0.6754864921213494
In [36]: lst = [1, 2, 3, 4, 5, 6, 7, 8, 9]
random.shuffle(lst) # 将序列重新排序
lst
Out[36]: [1, 3, 8, 4, 7, 2, 6, 5, 9]
In [37]: random.uniform(0, 100) # 产生一个0到100之间的随机实数
Out[37]: 25.885951644929495
In [38]: random.randint(0, 100) # 产生一个0到100之间的随机整数
Out[38]: 54
Python数字的部分就是这些,与上一篇相比应该是非常简单了。大家主要记住数字的类型及其转换、数字运算和函数的使用方法,以及随机函数的几种应用形式就可以了。
下一篇,将给大家介绍Python的几种运算方式和运算符,敬请关注。
感谢阅读本文!如有任何问题,欢迎留言,一起交流讨论^_^
欢迎扫描下方二维码,关注“亦说Python”公众号,阅读《手把手陪您学Python》系列文章的其他篇目,或点击下方链接直达。
《手把手陪您学Python》3——PyCharm的安装和配置
《手把手陪您学Python》5——Jupyter Notebook
For Fans:关注“亦说Python”公众号,回复“手12”,即可免费下载本篇文章所用示例语句。