第8课:基本数据类型

在内存存储的数据可以有多种类型。比如一个人的姓名可以用字符型存储、年龄可以使用数值型存储、而婚否可以使用布尔类型存储。这些都是python中提供的基本数据类型。下面将这些基本数据类型进行详细介绍。

数字类型

在程序开发时,经常使用数字记录游戏的得分、网站的销售数据和网站的访问量等信息。在python中,提供了数字类型用于保存这些数值,并且它们是不可改变的数据类型。如果修改数字类型变量的值,那么会先把该值存放到内容中,然后修改变量让其指向新的内存地址。

在python中,数字类型主要包括整数、浮点数和复数。

整数

整数用来表示整数数值,即没有小数部分的数值。在python中,整数包括正整数、负整数和0,并且它的位数是任意的(当超过计算机自身的计算功能时,会自动转用高精度计算),如果要指定一个非常大的整数,只需要写出其所有位数即可。

整数类型包括十进制整数、八进制整数、十六进制整数和二进制整数。

  • 十进制整数

十进制整数的表现形式大家都很熟悉。例如下面的数值都是有效的十进制整数:

大家可以在IDLE中直接执行一下看看

需要注意的是,十进制不能以0作为开头(0除外)

  • 八进制整数

由0-7组成,进位规则是“逢八进一”,并且以0o开头的数,如0o123(转换成十进制数为83),-0o123(转换成十进制为-83)

注意:在python3.x中,对于八进制数,必须以0o/0O开头,这与python2.x不同,在python2.x中,八进制数可以以0开头。

  • 十六进制整数

由0-9,A-F组成,进位规则是“逢十六进一”,并且以0x/0X开头的数,如0x25(转换成十进制数为37),0Xb01e(转换成十进制数为45086)

注意:十六进制必须以0X或0x开头

  • 二进制整数

只要0和1两个基数,进位规则是“逢二进一”。如101(转换为十进制数为5)、1010(转换为十进制数为10)。

浮点数

浮点数由整数部分和小数部分组成,注意用于处理包括小数的数。比如,1.1123、0.4、-1.89、3.1415926等。浮点数也可以使用科学计数法表示。比如,2.3e1、-4.51e2、9.13e-3等。

注意:在使用浮点数进行计算时,可能会出现小数位不确定的情况。例如计算0.1+0.1时,可以得到想要的结果0.2,而计算0.1+0.2时,却得到0.30000000000000004(想要的结果为0.3),执行结果如下:

对于这种情况,所有语言都存在这个问题,暂时忽略多余的小数位数即可。

  • 示例:更具身高体重计算BMI指数

上面的代码只是为了展示浮点数的实际应用,设计的源码按原样输出即可,其中str()函数用于将数值转换为字符串,if语句用于进行条件判断。后面的章节我们会有详细的讲解。运行结果如下图:

想要知道自己具体时多少BMI值的,可以直接打印一下bmi变量。

  • 复数

python中的复数与数学中的复数形式完全一致,都是由实部和虚部组成,并且使用j或J表示虚部。当表示一个复数时,可以将其实部和虚部相加,例如一个复数,实部为3.14,虚部为12.5j,则这个复数为3.14+12.5j。

字符串类型

字符串就是连续的字符序列,可以是计算机所能表示的一切字符的集合。在python中,字符串属于不可变序列,通常使用单引号“’ ‘”、双引号“” “”或者三引号“”’ ”’”或“””” “”””括起来。这三种引号形式在语义上没有差别,只是在形式上有些差别。其中单引号和双引号中的字符序列必须在一行上,而三引号内的字符序列可以分布在连续的多行上。

  • 示例:输出名言警句

定义3个字符串变量,并且应用print()函数输出,代码如下:

执行结果如下:

注意:字符串开始和结尾使用的引号形式必须一致。另外当需要表示复杂的字符串时,还可以进行引号的嵌套。例如下面的字符串也是合法的:

  • ‘在python中也可以使用双引号(” “)定义字符串’
  • “‘(..)nnn’也是字符串”
  • “””‘___'”_”***”””

示例:输出草泥马(神兽啊)

运行结果如下:

说明:输出该字符画时,可以借助输入法的字符画进行输出

python中的字符串还支持转义字符。所谓转义字符时指反斜杠“\”对一些特殊字符进行转义。常用的转义字符如下表:

转义字符说明
\续行符
\n换行符
\0
\t水平制表符,用于横向跳到下一制表位
\”双引号
\’单引号
\\一个反斜杠
\f换页
\0dd八进制数,dd代表的字符,如\012代表换行
\xhh十六进制数,hh代表的字符,如\x0a代表换行

注意:在字符串界定符的前面加上字符r或R,那么该字符串将原样输出,其中的转义字符将不进行转义,例如输出字符串“”失望之酒\x0a机会之杯””将正常输出转义字符换行,而输出字符串“r”失望之酒\x0a机会之杯””,则原样输出,执行结果如下:

布尔类型

布尔类型主要用来表示真或假的值。在python中,标识符True和False被解释为布尔值。另外,python中的布尔值可以转化为数值,其中True表示1,而False表示0。

说明:python中的布尔类型的值可以进行数值运算,例如“False+1”的结果为1.但是不建议对布尔类型的值进行数值运算。

在python中,所有的对象都可以进行真值测试。其中只有下面列出的几种情况得到的值为假,其它对象在if或者while语句中都表现为真。

  • False或None
  • 数值中的零,包括0、0.0、虚数0
  • 空序列,包括字符串、空元组、空列表、空字典
  • 自定义对象的实例,该对象的__bool__方法返回False,或__len__方法返回0

数据类型转换

python是动态类型的语言(也称为弱类型语言),虽然不需要先声明变量的类型,但有时候仍然需要用到类型转换。例如在“根据身高体重计算BMI指数”这一示例中,要想通过一个print()函数输出提示文字“身高为:”和浮点型变量height的值,就需要将浮点型变量height转换为字符串,否则将显示如下图所示的错误:

在python中,提供了如下表所示的函数类型间的转换

函数作用
int(x)将x转换成整数类型
float(x)将x转换成浮点数类型
complex(real[,imag])创建一个复数
str(x)将x转换成字符串
repr(x)将x转换成表达式字符串
eval(str)计算在字符串中的优秀python表达式,并返回一个对象
chr(x)将整数x转换成一个字符
ord(x)将一个字符x转换为它对应的整数值
hex(x)将一个整数x转换为一个十六进制字符串
oct(x)将一个整数x转换为一个八进制的字符串

示例:模拟超市抹零结账行为

在pycharm中新建一个文件,首先将各个商品金额累加,计算出商品总额,并转换字符串输出,然后在应用int()函数将浮点型的变量转换成整形,从而实现抹零,并转换字符串输出,代码如下:

说明:该代码指数部分代码,如果想要获取全部代码,可以百度一下

运行结果如下:

此图像的alt属性为空;文件名为image-36.png

常见错误:

在进行数据类型转换时,如果把一个非数字字符串转换为整形,将产生如下错误:

到这里我们又要开始考试的时候了,移步课后作业,第二次作业,愉快的做作业吧。