4 Python数据类型

计算机是可以做数学计算的机器,计算机程序理所当然可以处理各种数值。计算机能处理的远不止数值,还有文本、图形、音频、视频、网页等各种各样的数据,不同的数据需要定义不同的数据类型。Python 3中有6种标准的数据类型:Number(数字)、String(字符串)、List(列表)、Tuple(元组)、Sets(集合)、Dictionary(字典)。本节首先讲解Number数值类型,其他5种数据类型在后续章节介绍。
Python 3支持3种不同的数值类型:整型(int)、浮点型(float)、复数(complex)。

1.整型:

int通常被称为整型或整数,是正、负整数,不带小数点。在Python 3中,整型没有限制大小,可以当作long类型使用,所以Python 3没有Python 2的long类型。
例如,公司组织旅游,大家坐上了大巴准备出发,现在需要统计有多少人在车上,boss吩咐小萌清点一下人数,小萌花了两分钟逐个点了一遍,总计51人。小萌在交互模式下输入:

>>> 51
51

这里使用的就是整形。
到服务区后,大家休息了一下,再次准备出发时,boss又吩咐小萌清点一下人数。小萌苦笑一下,看来又得花两分钟清点人数了,为什么不叫一个人帮忙从车的另一头清点呢?于是小萌叫小智帮忙从另一头清点一下人数。一分钟后,小萌和小智在车中间碰上了,小智告诉小萌他的计数是25人,小萌在交互模式下输入:

>>> 25+25
50

小萌准备把数字报告给boss,突然想到上次报告的是51人,这次是50人,数字不同啊,还差1人,小萌在交互模式下输入:

>>> 51-50
1

怎么少了一人呢?小萌突然慌了,然后仔细一想,原来是把自己忘加上了,于是再次输入:

>>> 25+25+1
51

这次没问题了。于是小萌给了boss和上次一样的答案。boss示意司机可以发车了,又突然叫停,看天气挺热的,大家路上可能会口渴,于是吩咐小萌去服务区给每人买两瓶水,再买一大包糖给大家在路上补充能量。每人两瓶水,一共要买多少瓶呢?小萌在交互模式下输入:

>>> 51*2
102

一共要买102瓶水,这么多,于是小萌让小智帮忙一起去提水。
水和糖都买回来了,水好分,给每人两瓶就是,这一大包糖该怎么给大家呢?看包装袋上有总颗数,一共有153颗,每人多少颗呢?小萌在交互模式下输入:

>>> 153/51
3.0

好了,给每人发3颗糖就可以了。于是小萌高高兴兴发糖去了,小智也帮忙一起发,每人给3颗。糖终于发完了,小萌很惬意,坐下来补充能量。小萌突然想到了什么,有153颗糖,分给51人,每人3颗糖没错,但计算出来的结果怎么是3.0呢?假如有155颗糖,计算结果会是怎样的呢?输入以下数据:

>>> 155/51
3.0392156862745097

如果按这个结果分,就没有办法分了。这是怎么回事呢?
原因是:在整数除法中,除法(/)计算结果是浮点数,即使两个整数恰好整除,结果也是浮点数。如果只想得到整数的结果,丢弃可能的分数部分,可以使用地板除(//),整数的地板除(//)永远是整数,即使除不尽。
更改前面输入的数据:

>>> 153//51
3

这时就不是浮点数了。再看看155颗糖的结果:

>>> 155//51
3

153和155除以51都是3,这个就不对了。原来还有一个余数。
因为地板除(//)只取结果的整数部分,所以Python提供了一个余数运算,可以得到两个整数相除的余数,看看153和155对51的取余:

>>> 153%51
0
>>> 155%51
2

这次的结果就是想要的了。假如有155颗糖,就会多出2颗。小萌细细想着,嘴角泛起一丝自然的微笑,小智也发完糖了,过来向小萌汇报,看见小萌的表情,小智心里顿时暖暖的,无须报告了。

2.浮点型:

浮点型由整数部分与小数部分组成,也可以使用科学计数法表示。
比如,小萌还在细想中,boss突然打断了她的思维,问她总共花了多少钱。小萌理了一下思绪,每瓶水3.3元,一共102瓶,总共多少钱呢?输入如下:

>>> 3.3*102
336.59999999999997

结果怎么这么长?小萌看傻了,不过冷静一看,原来是:整数和浮点数在计算机内部存储的方式不同,整数运算永远是精确的,而浮点数运算可能会有四舍五入的误差。
“boss,一共336.6元”。“好的,加上买糖的钱了吗”?小萌暗骂自己,瞧我这脑筋。再计算一次,每瓶水3.3元,一共102瓶,再加上一包糖15.5元,输入如下:

>>> 3.3*102+15.5
352.09999999999997

这结果好像很凌乱,应该这么输入:

>>> 336.6+15.5
352.1

这个结果就好看多了。报告给boss,一共花费352.1元。
小萌又开始思考了,浮点数相乘结果这么怪,浮点数的除法是怎样的呢?想到了就实践,输入如下:

>>> 153/51.0
3.0

这个结果和153除以51的结果是一样的,如果155除以51.0呢?输入如下:

>>> 155/51.0
3.0392156862745097

结果和155除以51也是一样的。那做地板除和取余又是怎样的呢?输入如下:

>>> 155//51.0
3.0
>>> 155%51.0
2.0

可以看出,得到的结果都是浮点型的。

3.复数:

复数由实数部分和虚数部分构成,可以用a+bj或complex(a,b)表示,复数的实部a和虚部b都是浮点型。
Python支持复数,不过Python的复数我们当前阶段使用或接触的比较少,此处就不再具体讲解,读者有一个概念即可,有兴趣可以自行查阅相关资料。

4.数据类型转换:

有时我们要对数据内置的类型进行转换,只需要将数据类型作为函数名即可。数据的类型转换时有如下4个函数可以使用:

  • int(x)将x转换为一个整数。
  • float(x)将x转换为一个浮点数。
  • complex(x)将x转换为一个复数,实数部分为x,虚数部分为0。
  • complex(x, y)将x和y转换为一个复数,实数部分为x,虚数部分为y。x和y是数字表达式。

比如,小萌去购物,计算出应付金额是352.1元,超市老板为免除找零的麻烦,让小萌支付352元。Python中的转换可以如下执行:

>>> int(352.1)
352

很容易就得到了转换后的结果。但是金额的操作必须用浮点数进行记账,这个容易,用float函数就行了。输入如下:

>>> float(352.1)
352.1

这样就得到了浮点型数据。
结果跟输入的一样,这下怎么办呢?把int函数放入float函数中是否可以呢?尝试一下:

>>> float(int(352.1))
352.0

这里先把352.1取整,得到整数352,再用float将352转换成浮点数352.0,这样就得到我们需要的结果了。虽然输入的字符看起来有点复杂,但是还是得到结果了。
这其实是函数的嵌套,后面会进行具体介绍,此处做相关了解即可。

5.常量:

所谓常量,就是不能变的变量,比如常用的数学常数π就是一个常量。在Python中,通常用全部大写的变量名表示常量。

  • Python中有两个比较常见的常量,即PI和E。
  • PI:数学常量pi(圆周率,一般以π表示)。
  • E:数学常量e,即自然常数。

这两个常量将会在后续章节中使用,具体的用法在使用中体现。

你可能感兴趣的:(4 Python数据类型)