凯文.凯利以预测科技发展趋势而出名,在90年代里,他曾在他的著作《失控》中提及了云计算、物联网、虚拟现实等概念。他预言人类的未来是镜像世界。奇异博士利用魔法制造了镜像世界进行战斗,减少对现实世界的破坏;我们人类用代码程序也创造了一个镜像世界,在镜像世界里面高效地解决现实世界里的繁琐任务。其实呀,python世界可以看作部分现实世界的【镜像】,部分现实世界的东西、概念都可在python世界里找到对应,比如:现实世界中最常见的数字,文字,符号在Python世界就是:【数据】。 不同类型的数据『长相』不一样,各司其职。只有认清各类型数据的『长相』,了解它们的功能,才能在镜像世界里完成现实世界的任务。
一、数据类型
在现实世界的镜像——Python里,最常用的数据类型有三种——字符串(str)、整数(int)和浮点数(float)。
1、字符串
首先,我们来认识一下字符串,字符串英文string,简写str。字符串的识别方式非常简单——有层名为【引号】的皮,只要是被【单/双/三引号】这层皮括起来的内容,不论那个内容是中文、英文、数字甚至火星文。只要是被括起来的,就表示是字符串类型。

2、整数
可是有的时候,某些数据它脱了【引号】的马甲,也照样能打印出来。例如在上一关我们见过的【print(520)】。
这就是我们要介绍的,常见数据类型中的第二种:整数,整数英文为integer,简写做int。Python世界的整数其实和现实世界数学中定义的一样:是正整数、负整数和零的统称,是没有小数点的数字。
我们已经知道了字符串有【引号】的保护,可以和符号及其他文字类数据,譬如中文、英文随意组合。
而整数脱掉了【引号】马甲,只能『单独行动』。一旦碰上符号及其他文字类数据,譬如中文、英文,立马被报错秒杀。
3、浮点数
那数学意义上的小数在python中怎么表示呢?它就是我们常见三种数据类型中的最后一种:【浮点数】。
浮点数非常好识别,它比整数多了一个小数点『.』,比如下列代码中的数字都是浮点数。
浮点数的英文名是float,与整数(int)和字符串(str)不同,浮点数没有简写。
浮点数可能让你有点眩晕,这是因为,与【整数运算结果永远精确】的特点不同,计算机里浮点数的运算是不精确的,会有四舍五入的误差。这什么意思呢?

哎?为什么不是【0.85】,而尾巴多了一个【1】呢?这是因为,Python计算浮点数时,会先把0.55和0.3转化成二进制数【注:二进制数由0和1表示,逢二进一】,如下:
# 进制转换 0.55(十进制) = 0.1000110011001100110011001100110011001100110011001101(二进制) 0.3(十进制) = 0.0100110011001100110011001100110011001100110011001101(二进制)
而在这个转化过程中存在误差,这样,就造成了我们与程序计算结果的差异。
然后,这俩二进制数通过二进制法则运算后,再通过复杂的计算公式,将二进制结果转成十进制小数。
不过对于浮点数,你也不用太担心,因为在前期我们很少会涉及浮点数运算。在后期的基础课,你会接触到更多的相关知识,辅助你对浮点数的进一步理解。
二、数据的应用
1、四则运算

运算优先级:Python世界的运算优先级,和我们平时的计算优先级是一样的。
字符串拼接的方法可简单了,就是利用字符串拼接符号【+】,将需要拼接的变量连在一起就行了。
print(hero+action+organization+identity+ID)
学会了字符串拼接,就能让我们的数据整合更为灵活,组合出任意我们想要的内容。
2、数据类型的查询——type()函数

将查询函数的结果打印出来。例如:print(type(hero))。
3、数据转换
负责转换数据类型的函数一共有3种:str()、 int()和float()。
str()函数能将数据转换成其字符串类型,不管这个数据是int类型还是float类型,只要放到括号里。这个数据就能摇身一变,成为字符串类型。
整数转换字符串类型的方法是不是很方便?那如果我告诉你,还有一种转换成字符串的方法,而且这种方法你已经学会了呢?那就是借用【引号】的帮助: print(‘153’+expression+action+unit+magic)
可是,为什么引号内我们使用的是数字,而不是变量名number呢?这是因为,当我们使用引号时,引号里的东西,都会被强制转换为字符串格式。
将数据转换为整数类型的方法也很简单,就是int()函数。其使用方法同str()一样,将你需要转换的内容放在括号里就行,像这样:int(转换的内容)。
不过对于int()函数的使用,大家要注意一点:只有符合整数规范的字符串类数据,才能被int()强制转换。
最后,小数形式的字符串,由于Python的语法规则,也不能使用int()函数强制转换。
print(int(‘3.8’))
# 运行后显示结果:ValueError:invalid literal for int() with base 10: ‘3.8’
这是不是意味着,浮点数不能转换成整数类型了?不,虽然浮点形式的字符串,不能使用int()函数。但浮点数是可以被int()函数强制转换的。
int()函数的本质是将数据转换为整数。所以对于浮点数,int()函数会做取整处理。但是,同我们平时对小数四舍五入的处理方法不同,int()函数会直接抹零,直接输出整数部分。
可是,如果遇到这种情况:字符串就是小数形式,比如‘3.8’这种。我不想让它变为整数3,想让它保持小数形式的3.8,那我要怎么做呢?
这就涉及到了我们这关最后一个知识点——float()函数。
首先float()函数的使用,也是将需要转换的数据放在括号里,像这样:float(数据)。
其次,float()函数也可以将整数和字符串转换为浮点类型。但同时,如果括号里面的数据是字符串类型,那这个数据一定得是数字形式。

