- Python从入门到项目实践(超值版)
- 聚慕课教育研发中心
- 1218字
- 2021-03-24 19:37:29
3.1 数字类型
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P45_34799.jpg?sign=1739661850-Tbt4mnUFEVAWmqZCMGKbdXRMVJKgn1FJ-0-98d3ffa996f59e6ca9950ae9d80df622)
数字类型是Python的基础数据类型之一,主要包括整数类型、浮点数类型和复数类型。Python的数据类型用于存储数值型数据,例如日常生活中的整数、实数和复数等。它们在赋值存储后就不可再改变了,如果要改变数值则必须创建新的对象进行赋值。
3.1.1 整数类型
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P45_34793.jpg?sign=1739661850-ZfrFQ7IXtfNPZ8nqhvfoGTcgzVSkznAN-0-0e6f7b26a8db7c232500377f9761153b)
整数类型即对应现实生活中的整数。整数类型的数据包括正整数、负整数和零。不同于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=1739661850-SiN731AxFXNAyvioLwJAyJQvh4qtvwBv-0-ce2262c035044b74dc0c73b156cef5de)
3.1.2 整数的按位运算
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P46_35043.jpg?sign=1739661850-95h2bDCRVlhBVpZhGOnFhLrSkioPQASF-0-a5f7c46ad6ccc876e6c2fadd33a590a0)
按位运算仅对整数存在意义。按位运算结果的计算如同二进制补码的计算,用于计算有限位数的整数。理解上是对整数逐位的操作,其主要操作类型和操作类型如表3-2所示。
表3-2 按位运算操作符
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-T46_35046.jpg?sign=1739661850-kDJq94dw9dBI3zU1Kd54iO6PfdG1QEE5-0-ab092ed0d51a0bc40d50330129e069e7)
【例3-1】运算符。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P46_78650.jpg?sign=1739661850-ARROpyrKmFoyE1MXykuJF2pd5R4dUY0s-0-a74885f3a47301c8950ef8a866dc4bee)
对于左移和右移运算符,其格式为a <<或>> b,含义为将数字a的二进制位数左移或右移b位。
【例3-2】移位运算。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P46_78651.jpg?sign=1739661850-R5hOKXMqL5NsiisGn0doxLNGM9XYeWDz-0-918d6deb6005dcf6abea53fb1e95e443)
对于这些常见的位运算其中有几个要点需要注意。
(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=1739661850-chjCMpcWCHSmxvv5bDT2STibFhrKSDkQ-0-e272a36bfdc70f22486a3a6e27a0d659)
取反运算符>左移运算符>右移运算符>按位与运算符>按位异或运算符>按位或运算符
3.1.3 浮点数
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P47_35191.jpg?sign=1739661850-izYKKc6KPFlW6FTU1ajjGxTCll5keVs2-0-7c209fef58a1741117cd0bfa87c15891)
浮点数相对于整数存在小数点,由整数和小数部分组成。浮点数的写法除了日常写法外,常见的还包括科学计数法写法,例如,3e14代表3×10^3。
注意:浮点数的0.0和整数的0在逻辑运算上虽然含义是一样的,但是在Python中它们的存储位置却是不同的,实例如下。
【例3-3】浮点数存储位置。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P47_81312.jpg?sign=1739661850-YEGqFsObB708lrHrsJgVzGWm73Vi8qLq-0-fa9c9e1e17b911c1b7ba4b11ec8240ae)
3.1.4 复数类型
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P47_35197.jpg?sign=1739661850-TWLJ1r8Ql4G7j9CeO8JFYITjREpEbVsS-0-f1fd988ef472227d0b295df956fab8ea)
复数类型对应英文Complex,复数由实数部分和虚数部分构成,可以用生活中的方式a + bj格式表示,或者用complex(a,b)表示,j可大写也可小写。
【例3-4】复数运算。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P47_78654.jpg?sign=1739661850-cMXQf8bPhow8u5mLiqxXtOEZMCCU0KLb-0-0ab77b33bd331b752bd5ad1c444edd6d)
复数的实部的内建属性为real,复数的虚部的内建属性为imag,可用于输出复数的实部和虚部部分。
【例3-5】复数的实部与虚部。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P47_78655.jpg?sign=1739661850-WN24FB2MQWPnsOqloMkVmcsNlKGKBeHF-0-b4bc3763fb53e8e7261c1e99848b113a)
从实部和虚部的输出格式可以清楚地看到复数的实部a和虚部b都是以浮点型数据进行存储的。
3.1.5 布尔类型
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P48_35382.jpg?sign=1739661850-x0HTQJcJr43buFjC9maBTRGNDtIubKml-0-60c0bedb60dd993efaf4f4ffc4d65ff6)
布尔类型严格意义上来讲不算数字类型,但是作为Python的基本数据类型之一,还是需要了解和掌握的。
布尔类型只存在两种值:True和False。布尔类型支持常规的运算,例如与运算、或运算和非运算。
【例3-6】布尔运算。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P48_78657.jpg?sign=1739661850-GdZOjJMp009N1xWDJR7OjgA4TkBc7e2N-0-29f4d239130bc3e0b033cb07cd882e0a)
和其他语言一样,Python中的True和False同样可以和1与0等价进行常规运算。
【例3-7】特殊布尔运算。
![](https://epubservercos.yuewen.com/CDC5B1/15825991504141406/epubprivate/OEBPS/Images/Figure-P48_78658.jpg?sign=1739661850-2iLW1UnMWcgsxVK231QTjuQhqySEUugv-0-220074e7ad4717a471d7867552946d65)