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,即自然常数。

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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,084评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,623评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,450评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,322评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,370评论 6 390
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,274评论 1 300
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,126评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,980评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,414评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,599评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,773评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,470评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,080评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,713评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,852评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,865评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,689评论 2 354

推荐阅读更多精彩内容

  • 开发过程中,我们需要处理文本、图形、音频、视频、网页等各种各样的数据,不同的数据,需要定义不同的数据类型。在Pyt...
    软件测试汪阅读 567评论 0 6
  • 1.4.1 整型(int) 编码过程中, 会经常与整型数据打交道, 比较常见的就是求绝对值, 如下 1.4.2 浮...
    大红中阅读 429评论 0 0
  • 字符串 双引号或者单引号中的数据,就是字符串 下标所谓“下标”,就是编号,就好比超市中的存储柜的编号,通过这个编号...
    __method__阅读 126评论 0 0
  • Number(数字) Python的数字由字面值生成或者由算术操作符和内建的算术函数作为结果返回。数字提供了标量贮...
    常大鹏阅读 3,068评论 0 7
  • 每个季节都有属于自己独特的颜色。春天是绿的,是火红的,秋是金黄的,而冬是雪白的。每个季节里也有为其独有的标志性的蔬...
    醉夕颜阅读 815评论 0 7