2.3 其他数据类型

本次主要介绍整数类型以外的其他三种数据类型,分别是布尔型、浮点数和字符串。

首先来看看布尔型。这个古怪的名称来自于一位英国数学家,其实所谓布尔型,就是该数据类型的取值只有两种,即真假,在Python中分别使用True和False来表示(请注意,和变量名称一样前后无需加单引号),也称为逻辑型。一般而言,我们很少直接使用这种类型,更多的情况是利用布尔型变量保留一些逻辑判断结果。

flag = 1 > 2
print(flag)

输出为:False。这里的flag保存的是1和2大小比较的结果,显然输出为False。

这些逻辑运算的条件也可以通过一些逻辑比较来表达。比如:

flag = 1 >= 2
print(flag)
flag = 1 == 2
print(flag)
flag = 1 != 2
print(flag)

输出为:
False
False
True

这里的1>=2表示1是否大于等于2,显然为假。需要注意的是,判断相等和不相等使用的比较运算符分别是==和!=。

和整数进行代数运算不一样的地方在于,布尔型可以进行逻辑运算,比如and、or和not分别代表着并且、或者和非三种逻辑运算。

flag1 = True
flag2 = False
print(flag1 or flag2 and not flag1)

输出为:True。这里由于not运算优先级最高,因此not flag1为False,and运算优先级其次,False and False仍然为False,最后是or运算,True or False,结果为True。

浮点数就是小数,名称来自于英文float point,浮动的小数点,在各种科学计算和财经计算中用途更为广泛,常见的定义方式就是使用小数点来表示:

num = 1.5
print(num)

输出为:1.5。

对于特别大或者特别小的小数,还可以使用指数表示法:

num = 1.5e-5
print(num)

输出为:1.5e-05。这个num的数值就为0.000015,不过输出仍然还是指数形式。事实上,Python会自动决定对于特别大或者特别小的小数采取指数形式。

需要注意一点,由于浮点数存储数位的限制,不可避免存在着精度损失,而且很多科学计算需要反复计算,这种很小的精度损失就有可能在累积后产生明显的误差。比如:

num = 1 / 3
print(num)

运行界面为:

1/3 其实并不等于 0.3333333333333333,只要存储位有限截取了部分小数位尾部的3,总会产生误差。但是浮点数在Python确实存在着一定的明显误差。这种误差会带来一些非常奇怪的效果,后面我们会专门介绍相关处理方法,这些等大家学习后面知识后再去深究。如这个方法就可以控制误差,即使多次运算,而且精度更高:

import decimal
num = decimal.Decimal(1.78)
print(num)

运行界面为:

在这三种其他类型中,其实字符串是最为常见和常用的一种类型。之所以放在最后,也是因为相对内容更多一些。

所谓字符串就是指多个字符连接的整体,因此字符串和字符在Python并无本质区别。字符串通常表达各种文本信息。

前文已经说明,它就是使用单引号括起来的字符序列。其实也可以使用双引号,下面的写法都正确:

strs = '中国'
print(strs)

strs = "中国"
print(strs)

为什么两种引号都可以使用?原因在于字符串里面可能也有引号,此时为了避免产生歧义,就可以考虑采用不同的引号形式。比如这里由于字符串里面含有单引号,就必须使用双引号表示字符串。

strs = "It's a book"
print(strs)

输出为:It's a book。

如果此时还是采取单引号,就会出错!因为字符串中间的单引号不正确的分割了这个字符串。

如果真的连两种引号都存在于字符串中,我们甚至可以使用三个双引号来表示字符串,毕竟同时连续出现三个双引号的可能性非常小。

strs = """It's a book"""
print(strs)

运行界面为:

但是无论如何,我们都要保证前后引号类型一致,PyCharm等代码编辑器也往往会自动补齐对应的引号。

更为简单的做法,是考虑使用转义字符。所谓转义字符,就是以反斜杠标记的字符,系统默认将此字符看成字符的本来意思。

strs = 'It\'s a book'
print(strs)

运行界面为:

当然一定有人会说,那么如果字符串里有反斜杠怎么办?答案是两个反斜杠表示一个真正的反斜杠。

strs = 'C:\\temp\\data.dat'
print(strs)

输出为:C:\temp\data.dat。这种写法常常用在文件目录的表示中。

当然,为了避免上述这些绕来绕去的表示方法,有时也可以在字符串前面加上一个r

strs = r'C:\temp\data.dat'
print(strs)

输出内容同上。此时输出就是单引号中的原始字符,不使用任何转义功能。但是这种写法并不能完全保证没有歧义,尤其在混有引号的字符串中,大家可以自己多观察。

我们来看一个输出:

strs = 'C:\temp\newData.dat'
print(strs)

运行界面为:

大家能看懂这个输出结果吗?这里本想输出完整文件路径,但是不小心没写转义字符,但是结果并没有错,而是巧合的形成了更多的转义字符,比如\n表示换行,\t表示Tab对齐等等,因此形成了这样的结果。这些转义字符非常有用,常常可以表示一些难以表示的字符,这里我们所说的就是一些最常见也基本够用的转义字符。

最后我们看看一个常见的初学者问题:

num = 1.23
print('num')
print(num)

输出为:
num
1.23

大家能看懂吧?num作为变量名称,前后不能加单引号,一旦加了,就不是变量了,而是一个字符串!

配套学习资源、慕课视频:

Python大数据分析-李树青https://www.njcie.com/python/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

leeshuqing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值