四、Python 整数数据类型
(一)整数的表示方式
1. 十进制表示
十进制是我们在日常生活中最常用的数字表示形式,由 0 到 9 这十个数字排列组合而成。
2. 二进制表示
二进制数由 0 和 1 这两个数字组成,在 Python 中,书写二进制数时要以 0b 或 0B 开头,以此来和其他进制的表示形式区分开。
下面来看二进制与十进制相互转换的代码示例:
二进制转十进制:可以使用 int() 函数,将二进制数以字符串的形式传入,并指定第二个参数为 2,表示输入的是二进制数。示例如下:
bin_num = '0b101'
decimal_result = int(bin_num, 2)
print(decimal_result) # 输出结果为5
十进制转二进制:使用 bin() 函数,直接将十进制整数作为参数传入,函数会返回对应的二进制表示形式(以 0b 开头的字符串)。例如:
decimal_num = 10
bin_result = bin(decimal_num)
print(bin_result) # 输出结果为0b1010
3. 八进制表示
八进制由 0 - 7 这八个数字组成,在 Python 中的表示形式是以 0o 或 0O 开头。
八进制转十进制:同样借助 int() 函数,把八进制数当作字符串传入,同时指定参数 base 为 8,表明这是八进制数转十进制的操作。代码如下:
oct_num = '0o12'
decimal_result = int(oct_num, 8)
print(decimal_result) # 输出结果为10
十进制转八进制:利用 oct() 函数,将十进制整数作为参数传递进去,就能得到对应的八进制表示形式(以 0o 开头的字符串)。示例如下:
decimal_num = 15
oct_result = oct(decimal_num)
print(oct_result) # 输出结果为0o17
4. 十六进制表示
十六进制数由 0 - 9 以及 A - F(或 a - f)组成,在 Python 里书写时要以 0x 或 0X 开头。
十六进制转十进制:使用 int() 函数,把十六进制数以字符串形式传入,并设置参数 base 为 16,以此来完成转换。代码示例如下:
hex_num = '0x10'
decimal_result = int(hex_num, 16)
print(decimal_result) # 输出结果为16
十进制转十六进制:运用 hex() 函数,将十进制整数作为参数传入,函数会返回对应的十六进制表示形式(以 0x 开头的字符串)。例如:
decimal_num = 20
hex_result = hex(decimal_num)
print(hex_result) # 输出结果为0x14
五、Python 字符串数据类型
(一)字符串的创建方式
在 Python 中,创建字符串的方式多种多样,常用的有使用单引号、双引号以及三引号来进行创建,它们各自有着适用的场景和特点。
使用单引号创建字符串时,示例如下:
str1 = 'Hello'
str2 = 'I\'m a student'
str3 = "Python"
str4 = "I'm learning Python"
str5 = """This is a multi-line string.
It can span across multiple lines.
And keep the original formatting."""
通过三引号创建的字符串能够完整地保留输入时的格式,非常适合用于定义函数的文档字符串(docstring)等场景,方便对函数功能等进行详细的文字描述。
(二)字符串的常用操作
1. 按索引取值
在 Python 中,字符串是一种有序的字符序列,每个字符都有对应的索引值。索引值以 0 为开始值,从左往右依次递增;同时,也可以从右往左进行索引,此时 -1 为末尾字符的索引位置,然后往左依次递减。
例如,对于字符串 'Python',我们可以通过索引来获取其中的单个字符。代码示例如下:
str_example = "Python"
print(str_example[0]) # 输出 'P'
print(str_example[2]) # 输出 't'
print(str_example[-1]) # 输出 'n'
print(str_example[-3]) # 输出 'h'
通过指定相应的索引值,放在方括号内紧跟在字符串变量后面,就可以轻松获取到对应位置的字符,方便在程序中对字符串中的特定字符进行提取和操作。
2. 切片操作
字符串切片是一种很实用的操作,它的规则是 “顾头不顾尾”,也就是切片操作获取到的子串包含起始索引对应的字符,但不包含结束索引对应的字符。其基本语法格式为 [头下标:尾下标]。
比如,对于字符串 'Python',想要获取其中的一部分字符作为子串,可以这样操作:
str_example = "Python"
print(str_example[1:4]) # 输出 'yth'
这里切片的范围是从索引为 1 的字符 y 开始,到索引为 4 的字符 o 之前结束,所以得到的子串就是 'yth'。
如果省略头下标,如 str_example[:3],则表示从字符串开头截取到索引为 2 的字符,会得到 'Pyt';而省略尾下标,像 str_example[2:],则是从索引为 2 的字符开始截取到末尾,会输出 'thon'。
此外,还可以指定切片步长,语法格式变为 [头下标:尾下标:步长],步长用于控制每隔几个字符取一个字符。例如:
str_example = "Python"
print(str_example[::2]) # 输出 'Pto'
这里步长为 2,就会从开头开始,每隔 2 个字符取一个字符,最终得到 'Pto' 这个子串。
如果步长为负数,则表示从右往左进行切片,例如:
str_example = "Python"
print(str_example[::-1]) # 输出 'nohtyP'
这样就可以方便地将字符串进行反转操作,获取到原字符串逆序的结果。
3. 字符串拼接与重复
在 Python 中,使用 “+” 号可以进行字符串的拼接操作。例如:
str1 = "Hello"
str2 = "Python"
result = str1 + " " + str2
print(result) # 输出 'Hello Python'
上述代码将两个字符串以及一个空格字符串通过 “+” 号拼接在一起,形成了一个新的字符串。也可以将多个字符串变量或者字符串字面量进行拼接,以组合出更复杂、符合需求的字符串内容。
而使用 “*” 号则能够实现字符串的重复输出,示例如下:
str3 = "Python "
print(str3 * 3) # 输出 'Python Python Python '
通过将字符串与一个整数相乘,就可以让该字符串重复出现指定的次数,在需要重复展示某个固定格式的字符串时非常方便,比如打印分隔线等场景就可以利用这个操作。
4. 字符串格式化
Python 中常见的字符串格式化方式有多种,以下分别进行介绍。
使用占位符(% s、% d 等):
常用的占位符有 %s(字符串格式)、%d(十进制格式)、%f(浮点数格式)等。例如:
name = 'Tom'
age = 20
print('%s is %d years old.' % (name, age))
上述代码中,%s 会被后面元组中的字符串 'Tom' 替换,%d 会被整数 20 替换,最终输出 Tom is 20 years old.。并且对于 %f 还可以指定保留的小数位数,如 %.2f 表示保留 2 位小数,像这样:
num = 3.1415926
print('The number is %.2f' % num)
会输出 The number is 3.14。
使用 formatted 字符串(f-string):
这是带有 f 字符前缀的字符串,使用起来更加简洁方便,可以很直观地在字符串中直接用花括号 {} 包裹变量名或者表达式来进行格式化。例如:
name = 'Jerry'
age = 22
score = 95.5
print(f'{name} is {age} years old and got a score of {score:.2f}.')
在花括号内不仅可以嵌入变量,还能对变量进行一些简单的表达式运算或者格式控制,像控制数字的显示格式、对齐方式等,上述代码会输出 Jerry is 22 years old and got a score of 95.50.。
使用 format () 方法:
字符串中可以有占位符({} 表示的内容),然后配合 format() 方法的使用,会将 format() 方法中的参数替换为占位符内容。占位符可以用参数索引表示,即 0 代表第 1 个参数,以此类推,也可以用参数的名字表示占位符。例如:
name = 'Alice'
age = 18
s = '{0} is {1} years old.'.format(name, age)
print(s)
或者:
s = '{name} is {age} years old.'.format(name=name, age=age)
print(s)
都会输出 Alice is 18 years old.。在占位符中还可以有格式化控制符,对字符串的格式进行更加精准的控制,比如指定对齐方式(< 左对齐、> 右对齐、^ 居中对齐)、填充字符、数字的进制显示、千位分隔符等多种格式化操作,以满足不同场景下的输出格式需求。
5. 字符串查找与替换
在处理字符串时,常常需要查找其中是否包含某个子字符串,以及对字符串中的部分内容进行替换,Python 提供了相应的方法来实现这些操作。
查找子字符串:
可以使用 find 方法来查找子字符串在原字符串中首次出现的位置索引,如果找不到则返回 -1。例如:
str_example = "Python is a great programming language"
print(str_example.find("Python")) # 输出 0
print(str_example.find("Java")) # 输出 -1
还有 rfind 方法,它是从右往左查找子字符串首次出现的位置索引,例如:
str_example = "Python is a great programming language, Python is widely used"
print(str_example.rfind("Python")) # 输出 47
替换字符串内容:
使用 replace 方法可以将字符串中的指定子字符串替换为新的字符串内容。示例如下:
str_example = "Python is a great programming language"
new_str = str_example.replace("Python", "Java")
print(new_str) # 输出 'Java is a great programming language'
replace 方法会返回替换后的新字符串,原字符串本身并不会被修改。并且可以指定替换的次数,比如:
str_example = "Python Python Python"
new_str = str_example.replace("Python", "Java", 2)
print(new_str) # 输出 'Java Java Python'
这样就只会替换前两次出现的 Python 子字符串。通过这些查找和替换的操作方法,能够方便地对字符串进行内容的检索和修改,满足不同的文本处理需求。