通过实例2—3可以得知,Python中的变量可以存储多种数据类型的数据。例如用于数学运算的数字类型、用于处理文本信息的字符串类型、用于判断真假的布尔类型。下面将详细介绍这几种数据类型。
在生活中,经常使用数字,例如记录考试的成绩、统计网站的访问数据、计算营业额、制作公司的财务报表等。Python语言提供了数字类型,用来保存这些数值。如果要修改数字类型的变量,Python就会把该变量值放到内存中,然后修改变量让其指向新的内存地址。
在Python语言中,数字类型主要包括整数、浮点数、复数。
整数类型是用来表示只有整数部分而没有小数部分的数值,包括正整数、负整数、0。在Python中,保存一个整数需要多大的内存?Python会根据整数的大小来分配需要的字节数(1字节等于8位二进制)。如果某些数值超过了计算机本身的计算能力,Python则会自动采用高精度计算。
通过Python内置函数input(),可以得到键盘输入的数据信息。这些数据信息是字符串类型的,可以通过内置函数int(x),将x转换成整数类型。
整数类型包括十进制整数、二进制整数、八进制整数、十六进制整数。
(1)十进制整数:由0~9组成的数字,进位规则是逢10进1。各位读者对十进制整数很熟悉,在实际生活、工作中经常使用。
(2)二进制整数:由0、1组成的数字,进位规则是逢2进1。在Python中,以0b或0B开头的数字表示二进制。例如0b101(转换成十进制为5)、0b1001(转换成十进制为9)、-0b101、-0b1001。
(3)八进制整数:由0~7组成的数字,进位规则是逢8进1。在Python中,以0o或0O开头的数字表示八进制。例如0o135(转换成十进制为93)、0o246(转换成十进制为166)、-0o135、0o246。
(4)十六进制整数:由0~9、a、b、c、d、e、f组成,进位规则为逢16进1。在Python中,以0x或0X开头的数字表示十六进制。例如0xf(转换成十进制为15)、0x1d(转换成十进制为29)、-0xf、-0x1d。
在Python交互窗口中的执行结果如图2—5所示。
图2—5 二进制、八进制、十六进制的整数表示
在Python语言中,使用内置函数bin(),可以将十进制整数转换成二进制整数;使用内置函数oct(),可以将十进制整数转换成八进制整数;使用内置函数hex(),可以将十进制整数转换成十六进制整数。
【实例2—4】 将十进制整数2、4、8、16、32,分别转换成二进制、八进制、十六进制的整数,代码如下:
#===第2章代码2-4.py===# print('十进制整数2、4、8、16、32转换成二进制整数为') print(bin(2)) print(bin(4)) print(bin(8)) print(bin(16)) print(bin(32)) print('十进制整数2、4、8、16、32转换成八进制整数为') print(oct(2)) print(oct(4)) print(oct(8)) print(oct(16)) print(oct(32)) print('十进制整数2、4、8、16、32转换成十六进制整数为') print(hex(2)) print(hex(4)) print(hex(8)) print(hex(16)) print(hex(32))
运行结果如图2—6所示。
图2—6 代码2—4.py的运行结果
注意: 如果读者不熟悉进制转换等数学知识,则完全不用纠结。只需记住Python可以被当成一个特殊的计算器来使用,这个计算器能实现进制之间的转换。市面上的科学计算器可没有这项功能。各位读者,可以思考一下:为什么Python中除了十进制以外,还有二进制、八进制、十六进制?为什么人类的生活中除了十进制,还有十二进制、二十四进制、六十进制(钟表显示的时间)?
浮点数是指由整数部分和小数部分组成的数值,主要用于处理含有小数部分的数。例如3.1415929、0.3、-0.3、1.732、-1.732。浮点数可以使用科学记数法表示。例如3500可以表示成3.5e3,0.035可以表示成3.5e-2,-0.035可以表示成-3.5e-2。
通过Python的内置函数input(),可以得到键盘输入的数据信息。这些数据信息是字符串类型的,可以通过内置函数float(x),将x转换成整数类型。
【实例2—5】 创建一段程序,根据输入的半径数值,计算该圆的周长和面积,代码如下:
#===第2章代码2-5.py===# print("请输入这个圆的半径:") radius=float(input()) perimeter=2*3.14*radius area=3.14*radius*radius print("该圆的周长为",perimeter) print("该圆的面积为",area)
运行结果如图2—7所示。
图2—7 代码2—5.py的运行结果
注意: 在使用浮点数进行计算时,会出现小数位数不确定的情况,例如图2—7中的周长。对于这种情况,所有的编程语言都存在该问题,暂时忽略多余的小数即可。
Python中的复数是指由实数部分和虚数部分组成的数值,这与数学上的复数形式完全一致。使用j或J表示虚数部分,简称为虚部。例如虚数1+2j、1.414+1.732j、1.414-1.732j。在Python中,也可以使用内置函数complex(real,imag)来创建复数,其中real指实数部分的数值,imag指虚数部分的数值,如图2—8所示。
图2—8 在Python中创建复数
如果把Python当作计算器来使用,Python的计算范围不仅有实数范围,还包含虚数部分的复数。有兴趣的读者,可以使用Python来计算复数之间的加、减、乘、除。
在实际生活中,经常用到文本信息。例如在搜索引擎上输入的文字、在手机App上搜索框输入的信息。这些文本信息被Python归类为字符串类型。字符串就是一系列的字符,包括中文、英文、特殊符号等能被计算机所表示的字符的集合。
在Python中,字符串属于不可变的字符序列,通常使用单引号('')或双引号("")括起来。当然,这是在输入法设置在英文状态下的单引号和双引号,如果设置在中文状态下,则会出现编译错误。
如果要在字符串中输入一些特殊字符,就需要使用转义字符。转义字符是指使用反斜线(\)对一些字符串进行转义。例如'This is Tom\'s computer'。在两个单引号之间,还要使用单引号,为了不引起编译错误,使用转义字符。例如"司马迁对项羽的评价是\"自矜功伐,奋其私智而不师古。\""。在两个双引号之间,还要使用双引号,为了不引起编译混乱,使用转义字符。在Python中的运行结果,如图2—9所示。
图2—9 转义字符的使用
当然在使用单引号的情况下,可以使用转义字符表示双引号;在使用双引号的情况下,可以使用转义字符表示单引号。Python中常用的转义字符见表2—1。
表2—1 Python中常用的转义字符
【实例2—6】 使用转义字符,创建一段Python程序,打印苏轼的《定风波》,代码如下:
#===第2章代码2-6.py===# str1="定风波\n作者:苏轼" str2="莫听穿林打叶声,何妨吟啸且徐行.\012竹杖芒鞋轻胜马,谁怕?一蓑烟雨任平生.\n" str3='料峭春风吹酒醒,微冷,山头斜照却相迎.\x0a回首向来萧瑟处,归去,也无风雨也无晴.' print(str1) print(str2) print(str3)
运行结果如图2—10所示。
图2—10 代码2—6.py的运行结果
注意: 如果在字符串的定界符之前加上字母r或R,则字符串将原样输出,其中的转义字符不进行转义。例如str1=r"定风波\n作者:苏轼",打印该字符串变量后,将原样输出。
布尔类型主要用于判断真假的真值或假值。在Python中,使用关键词True表示真的布尔值;使用关键词False表示假的布尔值。另外布尔值可以解释成特殊的整型,True表示1,False表示0。
在Python中,布尔类型的值可以进行数学运算。例如“True+3”的结果是4,但不建议对布尔类型的值进行数学运算。
注意: 在Python中,除了以上3种基本数据类型,还有一个表示空的数据类型:None。各位读者可以在交互命令行窗口中输入type(None),查看这个None数据。如果对None进行真值测试,则其结果和False一样,即都是假。
因为Python是动态类型的编程语言,所以创建变量的语句不需要事先声明变量的类型。Python中的变量类型是根据变量值来确定的。在编程实践中,需要用到变量类型的转换。例如内置函数input()得到的输入数据是字符串类型的,有时需要将输入的数据转换成浮点型,以便进行数值计算。
Python提供了丰富的内置函数,用于数据类型的转换。常用的类型转换函数见表2—2。
表2—2 常用的类型转换函数和作用
有了数据类型转换函数的帮助,Python内置函数print()便可以使用两种方式打印输出信息,第1种是print(str1,num1),str1是字符串类型的变量,num1是数字类型的变量,使用逗号来分隔。第2种是print(str1+str2),str1、str2都是字符串类型的变量,可以使用加号来连接,如图2—11所示。
图2—11 内置函数print()的两种用法
注意: 使用print(str1,num1)打印输出,两个变量之间会有一个空格。使用print(str1+str2)打印输出,两个变量之间没有空格。