2.2 数据类型
编程是数据和逻辑的紧密结合。如果将编程比喻成建造大楼,那么不同的数据类型就是不同的材料,如钢筋、水泥、生石灰等。每种材料都有其用处,缺一不可。只有先弄明白Python中各种“材料”的用途,才能用Python建造一栋“摩天大楼”。下面我们先从数据入手,学习几种常用的Python数据类型。
2.2.1 整数
整数可以进行最常见的加、减、乘、除四则运算。在Python命令行模式下,可以把Python当成一个计算器。可在Python命令行模式下运行以下代码:
除了四则运算外,还可以进行幂运算、取模运算(取余数)和整除运算,代码如下:
2.2.2 小数
小数同样可以进行加、减、乘、除四则运算。在Python命令行模式下运行以下代码:
细心的读者会发现,1.234 - 4.321的结果并不是-3.087。这是什么原因呢?因为Python默认的小数类型是有精度损失的。毕竟计算机的世界只有0和1两种状态,无法准确表示小数,因此这种误差是在合理范围内的。其实不止Python,很多编程语言都有精度损失的问题。这是因为二进制在表示小数时经常遇到无限循环小数,而计算机的位数又有限,所以就造成了精度损失。在合理范围内,我们可以忽略这种精度损失。
2.2.3 字符串
字符串是用来存储“字符”的。字符串的定义是,用英文的双引号""括起来,或者用英文的单引号' '括起来,可以存储数字、符号、中文、英文、日文等一切可见的字符。
在Python命令行模式下运行以下代码:
字符串也可以进行“+”操作。只不过字符串的“+”操作是把字符串拼接起来。而字符串的“*”操作相当于复制,“a*10”就相当于把a复制10遍然后拼接起来。我们可以试一下字符串是否有“-”和“/”操作。
在Python命令行模式下运行以下代码:
此处显示两个报错信息:一个提示没有“-”操作,另一个提示没有“/”操作。因此,我们得知字符串是不能进行“-”和“/”运算的。
2.2.4 布尔值
在计算机的世界里,一切都是由0和1组成的。我们常说的“是”和“非”,对应的就是Python中的True和False。当然,也可以将其理解成“对”和“错”。True和False就是布尔值。
在Python命令行模式下运行以下代码:
从上面的这个例子中,可以看到一个新的符号—“==”。我们知道一个等号为赋值,那么两个等号是什么意思呢?两个等号用于判断等号左边的值和等号右边的值是否相等。在示例中,因为1不等于2,所以“1 == 2”的运算结果是False;因为1等于1,所以“1 == 1”的运算结果是True。除了“==”外,还有哪些比较运算符?
在Python命令行模式下运行以下代码:
“!=”符号表示,如果两边的值不相等,那么返回True,否则返回False。
“<”符号表示,如果右边的值比左边的值大,那么返回True,否则返回False。左右两边的值相等时也返回False。
“<=”符号表示,如果右边的值比左边的值大,或者两边的值相等,那么返回True,否则返回False。
“>”符号表示,如果右边的值比左边的值小,那么返回True,否则返回False。左右两边的值相等时也返回False。
“>=”符号表示,如果右边的值比左边的值小,或者两边的值相等,那么返回True,否则返回False。
上面的例子是通过比较运算符来得到布尔值的。布尔值与布尔值之间也是可以运算的,使用的运算符叫作逻辑运算符。
在Python命令行模式下运行以下代码:
逻辑运算符“and”,翻译成中文就是“并且”的意思。只有and两边的值都是True,才会返回True。
逻辑运算符“or”,翻译成中文就是“或”的意思。or两边的值有一个是True,就会返回True;只有or两边的值都是False,才会返回False。
逻辑运算符“not”,翻译成中文就是“否定”的意思,可以理解成取相反值或者颠倒是非。
下面用一个表格总结一下布尔值的运算(见表2-1)。
表2-1
2.2.5 None
None是一个特殊的常量。常量的值是不可变的。None既不是False,又不是0,也不是空字符串。可以把None理解为“空”。