![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=1738864299-fOdr7KvZ6PnCdtFZNylyMo9PZlZsqNrT-0-d470dfe365fe6df0e7edfec0dc0533d2)
数字类型是Python的基础数据类型之一,主要包括整数类型、浮点数类型和复数类型。Python的数据类型用于存储数值型数据,例如日常生活中的整数、实数和复数等。它们在赋值存储后就不可再改变了,如果要改变数值则必须创建新的对象进行赋值。
3.1.1 整数类型
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P45_34793.jpg?sign=1738864299-EVhLI3PM4YLsDaLmTyxvHUa4Q6oPFKLr-0-72cff10c3fc26c5fee9cc027e7f9ef20)
整数类型即对应现实生活中的整数。整数类型的数据包括正整数、负整数和零。不同于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=1738864299-VEzksivmePtKv7DW4c7BWNys3rlAhoTw-0-2aca466a62f7ae6fab4a4f479feba432)
3.1.2 整数的按位运算
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P46_35043.jpg?sign=1738864299-nwqYjSqSRC9W6f2dd0w1wWFkMvQzwlQJ-0-eaafdd8f6b0f9d8c42514a68e0c23e8d)
按位运算仅对整数存在意义。按位运算结果的计算如同二进制补码的计算,用于计算有限位数的整数。理解上是对整数逐位的操作,其主要操作类型和操作类型如表3-2所示。
表3-2 按位运算操作符
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-T46_35046.jpg?sign=1738864299-NQU5iGtsJ75sQyjLcg6Al0waMa9xVUlC-0-a19379a2070670c7c308cd2a6863b6c8)
【例3-1】运算符。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P46_78650.jpg?sign=1738864299-l1xax4G0TEGJg2h7TwTBSFdFT7GRIsQX-0-061c3d174220047bd71295364eb4bc5c)
对于左移和右移运算符,其格式为a <<或>> b,含义为将数字a的二进制位数左移或右移b位。
【例3-2】移位运算。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P46_78651.jpg?sign=1738864299-Ra5uGbWixwlvgmtWHe0dhj7qENVTLTGz-0-39e8c54ca65a06bc5e50255f183c7f6c)
对于这些常见的位运算其中有几个要点需要注意。
(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=1738864299-XFXNhmCM1ebAYhj5UbkEMCh887idmvKY-0-3b167353aea5c607aa54fb0048acc896)
取反运算符>左移运算符>右移运算符>按位与运算符>按位异或运算符>按位或运算符
3.1.3 浮点数
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P47_35191.jpg?sign=1738864299-yUf6RVkXSrd0NbP48VMtn10pnPxDwKkd-0-d5fdf3024570f26d88a7b95d39161b3c)
浮点数相对于整数存在小数点,由整数和小数部分组成。浮点数的写法除了日常写法外,常见的还包括科学计数法写法,例如,3e14代表3×10^3。
注意:浮点数的0.0和整数的0在逻辑运算上虽然含义是一样的,但是在Python中它们的存储位置却是不同的,实例如下。
【例3-3】浮点数存储位置。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P47_81312.jpg?sign=1738864299-11Tm7VwLZeoeYk67Tz2l5513JZ1wJGUk-0-851a3e6a103990a1ede63382e062ef94)
3.1.4 复数类型
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P47_35197.jpg?sign=1738864299-ky1oNtUaPc6fMl0M2XuGymRNGn0i3Pfq-0-3c8b6ea729fda545544c1fde6352cd63)
复数类型对应英文Complex,复数由实数部分和虚数部分构成,可以用生活中的方式a + bj格式表示,或者用complex(a,b)表示,j可大写也可小写。
【例3-4】复数运算。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P47_78654.jpg?sign=1738864299-8mmJ4L8bI7b819ExmHLgCKVBNixc0Irz-0-02feebf149acf06548865f44f17fc104)
复数的实部的内建属性为real,复数的虚部的内建属性为imag,可用于输出复数的实部和虚部部分。
【例3-5】复数的实部与虚部。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P47_78655.jpg?sign=1738864299-ZmJN6FxKaEI0iAbkmgjv1849h7xbCgxR-0-dd53d84f2469b23d07a08a22115ab25e)
从实部和虚部的输出格式可以清楚地看到复数的实部a和虚部b都是以浮点型数据进行存储的。
3.1.5 布尔类型
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P48_35382.jpg?sign=1738864299-lnqn1eTg0RiKv3OBZ0EOUJE9NvlZtDf1-0-53f6063f3b10b34758f0f3660326c77d)
布尔类型严格意义上来讲不算数字类型,但是作为Python的基本数据类型之一,还是需要了解和掌握的。
布尔类型只存在两种值:True和False。布尔类型支持常规的运算,例如与运算、或运算和非运算。
【例3-6】布尔运算。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P48_78657.jpg?sign=1738864299-YKlaZWMuRc0GSPcYH1QMz8fCgnk9lKLp-0-832bd7a4d8375bc3cee38c5bccd4a509)
和其他语言一样,Python中的True和False同样可以和1与0等价进行常规运算。
【例3-7】特殊布尔运算。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P48_78658.jpg?sign=1738864299-zXsImoLpJjx7d3YmFUIGpyRNO0UD4MaH-0-855a842dbf65cdd030685d168a2a4969)