![Python从入门到项目实践(超值版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/265/27563265/b_27563265.jpg)
3.1 数字类型
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P45_34799.jpg?sign=1739558538-oxosRt09jGOZbFE0LOk36SF9GXqqF9Mj-0-060be60933263b0669db349843c269eb)
数字类型是Python的基础数据类型之一,主要包括整数类型、浮点数类型和复数类型。Python的数据类型用于存储数值型数据,例如日常生活中的整数、实数和复数等。它们在赋值存储后就不可再改变了,如果要改变数值则必须创建新的对象进行赋值。
3.1.1 整数类型
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P45_34793.jpg?sign=1739558538-x9MOgHfHQ0NipayJ3C02V7bNagKHBxTS-0-27d2cc73de8c524226d3fa76a5451770)
整数类型即对应现实生活中的整数。整数类型的数据包括正整数、负整数和零。不同于Python 2.X,在Python 3.X中没有Long(长整型)这个类型,也就是Python 3.X中的整型没有限制。在Python中区分正整数和负整数的方式和生活中一样采用符号区分,如-100、0、-3等。
虽然Python 3.X已经成为主流,但是依旧可以了解下Python 2.X中的长整型数据。为了标识长整型数据,一般在数据末尾添加大写或小写的L(通常情况下小写L和数字1不易区分,因此常用大写的L),如5623656L。
为了方便计算和书写,Python中整数可以用多种不同的进制方式书写,其格式为0+进制方式(通常为一个大写字母)+相应进制的数据。具体格式如表3-1所示。
表3-1 进制格式
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-T46_35045.jpg?sign=1739558538-z4UwZ6FOo2CDp5ZYEhALpOb1rxID9qsk-0-50284a1cc884a6e17dc5d8eddf083ab6)
3.1.2 整数的按位运算
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P46_35043.jpg?sign=1739558538-SNg5iap3jdGlyKR4IIEHkfs5Dai0yD1o-0-0fb7c51f62c3a865966faefcc03bca5d)
按位运算仅对整数存在意义。按位运算结果的计算如同二进制补码的计算,用于计算有限位数的整数。理解上是对整数逐位的操作,其主要操作类型和操作类型如表3-2所示。
表3-2 按位运算操作符
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-T46_35046.jpg?sign=1739558538-7sit1Fpj4xr7unbV9FoTkek4Yak1iLRk-0-2b22eb51ba58001629972ef4afd37164)
【例3-1】运算符。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P46_78650.jpg?sign=1739558538-kkpm2Xri9Zbptwh0yT957NyWShXLZKpt-0-8844dd25ddcd58cf235241e7214e1c97)
对于左移和右移运算符,其格式为a <<或>> b,含义为将数字a的二进制位数左移或右移b位。
【例3-2】移位运算。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P46_78651.jpg?sign=1739558538-u4j4F8lopc9AfW03yKdGwOPfSaKLbyKh-0-8a748d1598eefb4f0acfff87f73c0b0e)
对于这些常见的位运算其中有几个要点需要注意。
(1)负数的移位计数为非法操作,其可能导致ValueError错误。
(2)左移位,低位空缺补零,高位溢出舍弃;右移位,高位空缺补零,低位溢出舍弃。
(3)左移N位相当于将数乘以2的N次幂;右移N位相当于将数除以2的N次幂。
(4)对于整型数据的操作,实际上都是对其补码的操作(Python 2.X中Long型的补码相当于其补码符号位无限拓展)。
(5)位运算符和普通运算符一样存在优先级,其优先级由低到高为:
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P47_78653.jpg?sign=1739558538-uaGOObqo2LfTzMHDOydCWeYGJea4IMgX-0-a2d597a19f24e6d6a8be914062faf1a8)
取反运算符>左移运算符>右移运算符>按位与运算符>按位异或运算符>按位或运算符
3.1.3 浮点数
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P47_35191.jpg?sign=1739558538-mYcH1Z18IKVLLWEym74igHhJS8w87Ked-0-be147e34eb29c2d98400d2c29d3fd7a6)
浮点数相对于整数存在小数点,由整数和小数部分组成。浮点数的写法除了日常写法外,常见的还包括科学计数法写法,例如,3e14代表3×10^3。
注意:浮点数的0.0和整数的0在逻辑运算上虽然含义是一样的,但是在Python中它们的存储位置却是不同的,实例如下。
【例3-3】浮点数存储位置。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P47_81312.jpg?sign=1739558538-82U1Y0qd75txEkhHNrQcrCAxvvvhVBj7-0-13e009bb9c6069ebad60ae694d18961b)
3.1.4 复数类型
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P47_35197.jpg?sign=1739558538-7NkYIjF0LQ7EAU979SmmzNi87JXhoMt1-0-29f3a2f3871f3b38272b319fe52c5ee2)
复数类型对应英文Complex,复数由实数部分和虚数部分构成,可以用生活中的方式a + bj格式表示,或者用complex(a,b)表示,j可大写也可小写。
【例3-4】复数运算。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P47_78654.jpg?sign=1739558538-rjO1XALUOVURaGQL60LaciEYyJEm7KKr-0-3e4b36bc6ebe2369fe19c79355dbc29a)
复数的实部的内建属性为real,复数的虚部的内建属性为imag,可用于输出复数的实部和虚部部分。
【例3-5】复数的实部与虚部。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P47_78655.jpg?sign=1739558538-ph1yies5weerjfNbYgALIND9zoFnq8me-0-0121b321e14bed8f40800c6169e21494)
从实部和虚部的输出格式可以清楚地看到复数的实部a和虚部b都是以浮点型数据进行存储的。
3.1.5 布尔类型
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P48_35382.jpg?sign=1739558538-klDcuuw2lYxWMgTxlSaPX62ZpYPLs9En-0-f1d27c1e1fb0d74d70d7aebea1af9323)
布尔类型严格意义上来讲不算数字类型,但是作为Python的基本数据类型之一,还是需要了解和掌握的。
布尔类型只存在两种值:True和False。布尔类型支持常规的运算,例如与运算、或运算和非运算。
【例3-6】布尔运算。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P48_78657.jpg?sign=1739558538-DDSQtTZBncFUo5X9AqSc6pVuUmQUs1cJ-0-8df10d752ba0e501b8dd383088aad83b)
和其他语言一样,Python中的True和False同样可以和1与0等价进行常规运算。
【例3-7】特殊布尔运算。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P48_78658.jpg?sign=1739558538-BPOC8jaRgoLdc3jxC7yoVaUcLO6Laaqh-0-acde033c5845c01973709362d0e84aab)