第 3 章 基本数据类型

导读:本篇文章讲解 第 3 章 基本数据类型,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

整理的文章内容主要来源为高教版《计算机等级考试二级 Python》教程视频讲义,并且更正了原讲义中的错误的地方。
专栏文章索引如下:
考试大纲
第 1 章 程序设计基本方法
第 2 章 Python 语言基本语法元素
第 3 章 基本数据类型
第 4 章 程序的控制结构
第 5 章 函数和代码复用
第 6 章 组合数据类型
第 7 章 文件和数据格式化
第 8 章 Python 计算生态
第 9 章 Python 标准库概览
第 10 章 Python 第三方库使用
第 11 章 Python 第三方库纵览

1. 数字类型

Python 中提供 3 种数字类型:整数类型、浮点数类型和复数类型。

1.1 整数类型

Python 中的整数没有取值范围的限制,理论上来说只要内存能够存储,Python 可以使用任意大小的整数。
整数类型有 4 种进制方式表示:十进制、二进制、八进制、十六进制。默认情况下,采用十进制,如果需要表示其他进制方式需要增加引导符号。
整数类型的 4 种进制表示如下表所示:

进制种类 引导符号 描述
十进制 默认情况 123
二进制 0b 或 0B 由 0 和 1 组成,例如:0b001, 0B10001
八进制 0o 或 0O 由 0 到 7 组成,例如:0o5762, 0O5674
十六进制 0x 或 0X 由 0 到 9, A 到 F 或 a 到 f 组成,例如:0x455Fe, 0X6598A

不同进制的整数之间可以直接运算或比较,程序无论采用哪种进制表达数据,计算机内部都以相同的格式存储数据,进制之间的运算结果默认以十进制方式显示。
在这里插入图片描述
代码解析:

  1. 16 进制数 0x1F 与 10 进制数 31 比较,相等则返回 True
  2. 16 进制数 0x768 是否大于 8 进制数 0o765,大于返回 True
  3. 16 进制数 0x768 与 8 进制数 0o765 相加,结果以 10 进制形式返回

1.2 浮点数类型

浮点数表示带有小数的数值,在 Python 语言中的浮点数类型必须带有小数部分,小数部分可以是0. 例如,10 是整数,10.0 是浮点数。
浮点数有两种表示方法:十进制表示形式和科学计数法表示形式,浮点数没有其他进制表示形式。

科学计数法使用字母 e 或者 E 作为幂的符号,以 10 为基数。
浮点数的取值范围和小数精度受不同计算机系统的限制。浮点数的取值范围为 [-10308,10308], 浮点数之间的区分精度约为 2.22*10-16. 对于绝大部分运算来说,浮点数类型的取值范围和小数精度足够“可靠”。一般认为浮点数类型没有范围限制。
在这里插入图片描述
相同数值的整数和浮点数哪个运算精度更高呢?
整数 100 和浮点 100.0 它们的值是相等的,但是在进行幂运算时结果却不同。
在这里插入图片描述
Python 语言的浮点数运算存在一个“不确定尾数”问题,即两个浮点数运算时,有可能增加一些“不确定”的尾数。
在这里插入图片描述
这不是计算运行错误,而是计算机内部结构造成的。在计算机内部,使用二进制表示浮点数,受计算机表示浮点数使用的存储宽度限制,这个二进制数不完全等于 0.1,而是最接近 0.1 的二进制数。因此在计算机内部进行运算时,将最接近 0.1 和最接近 0.2 的两个数相加运算,产生的数接近 0.3, 但未必是最接近的。最后以十进制的形式表示时就产生了这个尾数,尾数的值根据计算机内部做二进制运算时确定产生。
不确定尾数问题会对浮点数运算结果的判断造成一定困扰。由于 0.1+0.2 的运算结果中存在不确定尾数,所以与 0.3 判断是否相等时结果为 False.
在这里插入图片描述
在 Python 中有个内置函数叫 rand(), 用于进行四舍五入的运算,所以可以使用 round() 这个函数限制运算结果保留位数,去掉不确定尾数。
在这里插入图片描述

1.3 复数类型

复数类型表示数学中的复数,复数使用 a+bj 的形式表示,称为实部和虚部。其中,j 称为“虚部单位”,它被定义为 j = √-1.
在 Python中,复数采用 (a,b) 表示 a+bj, a 表示实部,b 表示虚部,虚部通过后缀 ”j” 表示。当 b 等于 1 时,1 不能省略,采用 1j 表示复数,而 j 表示Python 程序中的一个变量。
复数类型中实部和虚部都是浮点类型,对于复数 z, 可以用 z.real 和 z.imag分别获取实数部分和虚数部分。

2. 数字类型的运算

2.1 数值运算操作符

Python 提供了 9 个基本的数值运算操作符。
数值运算操作符:

操作符及运算 描述
x+y x 与 y 之和
x-y x 与 y 之差
x*y x 与 y 之积
x/y x 与 y 之商,产生结果为浮点数
x//y x 与 y 之整数商
x%y x 与 y 之商的余数,也称为模运算
-x x 的负数
x x 本身
x**y x 的 y 次幂,即 xY

数值运算可能改变结果的数据类型,类型的改变与运算符有关。
规则如下

  • 整数和浮点数混合运算,输出结果是浮点数
  • 整数之间运算,产生结果类型与操作符有关,除法(/)运算的结果是浮点数
  • 整数或浮点数与复数运算,运算结果是复数

数值运算符与赋值运算符相连组成增强赋值操作符,例如:+=、-=、*=、/=、//=、%=、**=, 使用增强赋值操作符能够简化对同一变量赋值语句的表达式。
在这里插入图片描述
**注意事项:**数值运算符与赋值运算符=之间不能有空格。

2.2 数值运算函数

函数表示为对参数的特定运算。Python 解释器自身提供了一些预先编好的函数称为“内置函数”,其中与数值运算相关的函数如下:

序号 函数 描述
1 abs(x) x 的绝对值
2 divmod(x) (x//y, x%y)输出元组形式的商和余数
3 pow(x,y) 或 pow(x,y,z) xy 或 (xy)%z, 幂运算
4 round(x) 或 round(x, d) x 的绝对值
5 max(x1, x2, x3,…, xn) N 个数的最大值
6 min(x1, x2, x3,…, xn) N 个数的最小值

3. 字符串类型与格式化

字符串又称为字符序列,根据字符串的内容多少分为单行字符串多行字符串。
单行字符串可以由一对单引号或一对双引号作为边界,单引号和双引号的作用相同。当使用单引号时双引号可以作为字符串的一部分,使用双引号时,单引号可以作为字符串的一部分。
多行字符串由一对三单引号或三双引号作为边界来表示,二者作用相同。

print("'这是单行字符串'")
print("这是单行字符串")
print(""")
这是多行字符串""")
)

反斜杠字符 \ 是一个特殊的字符,在 Python 字符串中表示“转义”,即该字符与后面相邻的一个字符共同组成了新的含义。
常见的转义字符:

  • \n 表示换行
  • \ 表示反斜杠
  • ’ 表示单引号
  • ” 表示双引号
  • \t 表示制表符
    在这里插入图片描述

3.1 字符串索引

对字符串中某个字符的检索称为索引。
语法如下:

字符串或字符串变量[序号]

字符串的索引包括:正向递增序号反向递减序号。如果一个字符串的长度为 N, 正向递增需要以最左侧字符序号为 0, 向右依次递增。最后右侧字符序号为 N-1. 反向递减序号以最右侧字符序号为 -1, 向左依次递减,最左侧字符序号为 -N, 这两种索引字符的方法可以同时使用。

s = 'hello world'
print(s[0])
print(s[-1])

3.2 字符串的切片

对字符串中某个子串或区间的检索称为切片。
语法如下:

字符串或字符串变量[start:end:step]

以步长为 step, 使用切片获取字符串 start 到 end(不包括 end)的子字符串。其中, start和end为字符串的索引序号,step 为 每隔 step 个字符取子字符串,可以混合使用正向递增和反向递减序号。切片要求 start 和 end 都在字符串的索引区间,如果 start 大于 end, 则返回空字符串。如果 start 缺失,则默许将 start 设为0,如果 end 缺失,则默认到字符串末尾。如果 step 缺失,则默认 step 值为 1.

s = 'hello python! I am learning python!'
print(s[0:9:2])
print(s[0:9])
print(s[:9])
print(s[0:])

3.3 format() 方法的基本使用

字符串格式化指的是用于解决字符串和变量同时输出时的格式安排问题。
语法格式:

模板字符串.format(逗号分隔的参数)

模板字符串是一个字符串和槽组成的字符串,用来控制字符串和变量的显示效果,槽用 {} 来表示,对应 format() 方法中的逗号分隔的参数。

'{}曰:学而时习之,不亦说乎'.format('孔子')

如果模板字符串有多个槽,且槽内没有指定序号,则按照槽出现的顺序分别对应 format() 方法中的不同参数。

'{}曰:学而时习之,不亦{}'.format('孔子','说乎')

format() 方法中参数根据出现先后存在一个默认序号。例如,在上面的示例中,‘孔子’对应第一个 {}, 而‘说乎’对应第二个 {}.

3.4 format() 方法的格式控制

format() 方法的槽除了包括参数序号,还可以包括格式控制信息。格式控制标记用来控制参数显示时的格式。
语法格式:

{参数序号:格式控制标记}
序号 格式 描述
1 : 引导符号
2 填充 用于填充的单个字符
3 对齐 < 左对齐,> 右对齐,^ 居中对齐
4 宽度 槽的设定,输出宽度
5 , 数字的千位分隔符,适用于整数和浮点数
6 .精度 浮点数小数部分的精度或者字符串的最大输出长度
7 类型 整数类型:b,c,d,o,x,X. 浮点数类型:e,E,f,%

用于显示格式的规范:填充、对齐、宽度。

  • 宽度:指当前槽的设定输出字符宽度,如果实际值比宽度设定的值大,则使用实际长度。
  • 对齐:默认时左对齐。
  • 填充:默认是空格字符串填充,填充字符只能有一个。

在这里插入图片描述
用于对数值本身的规范:,、.精度、类型。

  1. 逗号 (,):用于显示数字类型的千分位分隔符。
  2. .精度:由小数点 (.) 开头,对于浮点数,精度表示小数部分输出的有效位数,对于字符串,精度表示输出的最大长度。如果小数点保留长度超过应输出的长度,以应输出长度为准。

在这里插入图片描述
类型:表示输出整数和浮点数类型的格式规则

  1. 整数类型输出格式:
    1.1 b: 输出整数的二进制方法
    1.2 c: 输出整数对应的 Unicode 方式
    1.3 d: 输出整数的十进制方式
    1.4 o: 输出整数的八进制方式
    1.5 x: 输出整数的小写十六进制方式
    1.6 X:输出整数的大写十六进制方式
    在这里插入图片描述

  2. 浮点数类型输出格式:
    2.1 e: 输出浮点数对应的小写字母 e 的指数形式
    2.2 E: 输出浮点数对应的大写字母 E 的指数形式
    2.3 f: 输出浮点数的标准浮点形式
    2.4 %: 输出浮点数的百分比形式
    在这里插入图片描述

4. 字符串类型的操作

4.1 字符串操作符

操作符 描述
x+y 连接两个字符串 x 与 y
x * n 或 n * x 将字符串 x 赋值 n次
x in s 如果 x 是 s 的子串,返回 True, 否则返回 False

在这里插入图片描述

4.2 字符串处理函数

操作 描述
len(x) 返回字符串 x 的长度,也可以返回其他组合数据类型的元素个数
str(x) 返回任意类型 x 所对应的字符串形式
chr(x) 返回 Unicode 编码 x 对应的单字符
ord(x) 返回单字符 x 表示的 Unicode 编码
hex(x) 返回整数 x 对应十六进制的小写形式字符串
oct(x) 但会整数 x 对应八进制数的小写形式字符串

len(x) 返回字符串 x 的长度,以 Unicode 字符为计数单位,中英文及标点符号等都是 1 个长度单位。
str(x) 返回 x 的字符串形式,其中 x 是数字类型或其他类型。
chr(x) 和 ord(x) 函数用于在单个字符和 Unicode 编码值之间进行转换。chr(x )函数返回 Unicode 编码对应的字符,ord(x) 函数返回单个字符 x 对应的 Unicode 编码。
hex(x) 和 oct(x) 函数分别返回函数 x 对应十六进制和八进制值的字符串形式,字符串以小写形式表示。

4.3 字符串处理方法

方法 描述
str.lower() 返回字符串 str 的副本,全部字符小写
str.upper() 返回字符串 str 的副本,全部字符大写
str.split(sep=None) 返回一个列表,由 str 根据 sep 被分割的部分构成,省略 sep 默认以空格分隔
str.count(sub) 返回 sub 字串出现的次数
str.replace(old, new) 返回字符串 str 的副本,所有 old 字串被替换为 new
str.center(width, fillchar) 字符串居中函数,fillchar参数可选
str.strip(chars) 从字符串 str 中去掉在其左侧和右侧 chars 中列出的字符
str.join(item) 将 item 变量的每一个元素后增加一个 str 字符串

注:字符串副本指返回一个新的字符串,但不改变原来的 str.
str.lower() 和 str.upper() 是一对方法,能够将字符串的英文字符变成小写或大写。
str.split(sep) 可以根据 sep 分隔字符串 str. str 不是必需的,默认采用空格分隔,sep 可以是单个字符,也可以是一个字符串,分割后的内容以列表类型返回。
str.count(sub) 方法返回字符串 str 中出现的次数,sub 是一个字符串。
在这里插入图片描述

5. 类型判断和类型间转换

Python 提供 type(x) 函数对变量 x 进行类型判断,适用于任何数据类型。

print(type('hello'))
print(12)
print(12.12)

隐式类型转换:
数值运算操作符可以隐式地转换输出结果的数字类型。例如:两个整数采用运算符 “/” 的除法将可能输出浮点数结果。
显示类型转换:
通过类型转换函数可以显示地在数字类型之间进行转换。

函数 描述
int(x) 将 x 转换为整数,可以是浮点数或字符串
float(x) 将 x 转换为浮点数,x 可以是整数或字符串
str(x) 将x转换为字符串,x可以是整数或浮点数

浮点数转换为整数类型时,小数部分会被舍弃掉(不使用四舍五入)。整数转换成浮点数类型时,会额外增加小数部分。
在这里插入图片描述
在这里插入图片描述

6. 选择题

(1)以下是八进制数字的是()
A. 0b072
B. 0a1010
C. 0o711
D. 0x456
(2)以下字符串合法的是()
A. “abc’def’ghi”
B. “I love“love”Python”
C. “I love Python”
D. ‘I love ‘Python’’
(3)Python 程序采用 Unicode 编码,英文字符和中文字符在 Python 中分别对应字符的个数是()
A. 1:1
B. 1:2
C. 2:1
D. 2:2
(4)以下不是 Python 内置数据类型的是()
A. char
B. int
C. float
D. list
(5)Python 支持复数类型,以下说法错误的是()
A. 实部和虚部都是浮点数
B. 表示复数的语法是 real + imagej
C. 1+1j 是复数
D. 虚部后缀必须是小写形式
(6)以下是 print(‘\nPython’) 语句运行结果的是()
A. 在新的一行输出:Python
B. 直接输出:’\nPython’
C. 直接输出:\nPython
D. 先输出n,然后新的一行输出 Python
(7)字符串:s=’abcde’, n 是字符串 s 的长度。索引字符串 s 字符 ’c’, 下面正确的语句是()
A. s[n/2]
B. s[(n+1)/2]
C. s[n//2]
D. s[(n+1)//2]
(8)以下不是 Python 内置函数的是()
A. int()
B. float()
C. len()
D. string()
(9)以下能够根据逗号‘,’分隔字符串的是()
A. s.split()
B. s.strip()
C. s.center()
D. s.replace()
(10)以下能够同时作用于所有数字类型和字符串类型的函数是()
A. len()
B. complex()
C. type()
D. bin()

PDF 讲义下载链接如下:
链接:https://pan.baidu.com/s/1rc8d2_mmtci0o5vtCSl6rg
提取码:8080

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由半码博客整理,本文链接:https://www.bmabk.com/index.php/post/5184.html

(0)
小半的头像小半

相关推荐

半码博客——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!