登录  | 立即注册

游客您好!登录后享受更多精彩

查看: 90|回复: 4

使用Python编写游戏自动化脚本及自动办公03.for循环、列表、字符串

[复制链接]
回帖奖励 150 断点币 回复本帖可获得 10 断点币奖励! 每人限 1 次

171

主题

21

回帖

1048

积分

管理员

积分
1048
发表于 2025-3-16 23:10:42 | 显示全部楼层 |阅读模式

Python编程进阶拓展

课前回顾

在今天课程开始之前,同学们和断点社区一起回顾一下上一堂课的主要知识内容:

  1. 学习了Python的数值类型(Numbers),不同数值类型之间的转换和相关运算。
  2. 学习了四类常用运算符的使用。
  3. 学习了条件分支语句,并编写了一个猜数字游戏。

在前面课程的基础上,今天继续Python学习征途,今天课程的主要内容如下:

  1. 学习for循环,并通过for循环计算从1到100所有整数相加的和。
  2. 学习Python字符串。
  3. 学习Python列表。

for循环

断点社区不喜欢做重复的事情,而工作中那些重复的事情又不得不做,相信大家都会有同样的感受,反复做同样的事情很枯燥且容易让人烦躁。

学习编程之后会发现,计算机非常擅长做重复繁琐的事情,所以可以让计算机来完成这些重复工作。

接下来学习如何让计算机去完成那些重复的事情。首先来理解循环(looping)的概念:循环就是让计算机程序周而复始地重复执行同样的步骤。循环主要分为两种类型:

  1. 重复一定次数的循环,称为计数循环(counting loop),在Python中用for来完成非常方便。例如计算1到100所有整数的和,1 + 2 + 3 +... + 99 + 100,重复的相加动作,且重复次数确定,总共累加99次。
  2. 重复直至发生某种情况时结束的循环,称为条件循环(conditional loop),只要条件为真,这种循环会一直持续下去。例如上一堂课编写的猜数字游戏,一次次输入数字去匹配谜底数字,如果没有猜对,就重复不断地输入数字去匹配,直到匹配成功为止。在Python中使用while循环完成这种重复工作非常方便(while循环会在后面的课程中详细讲解)。

根据对循环概念的理解分析,通常把第一种循环称为for循环或计数循环,第二种循环称为while循环或条件循环。今天重点来学习for循环。

image-20250309191552517.png

在很多编程语言中都有多种形式的for语句,Python中的for语句即for - in语句,它可以遍历任意可迭代对象中的元素。可迭代对象包括字符串、列表、元组、集合和字典等。

(一)for语法

for语句的一般格式如下:

for变量in可迭代对象:  # 以英文冒号结尾
    循环体语句组  # 缩进(在Python编程规范中推荐使用4个半角空格)
else : 
    语句组  # 中括号部分可以省略

image-20250309191628820.png

for循环的执行流程图:先判断在序列中是否还有元素,若有则取出下一个元素并执行循环体语句组;若遇到break、return或有异常发生则中断循环;若循环体正常结束,则执行else语句(如果有),最后结束循环。

for语句中的else子语句与while语句中的else子语句作用一样,在循环体正常结束时才执行else语句,在循环被中断时不执行(在遇到break、return和有异常发生时都会中断循环)。

image-20250309191646757.png

(二)示例讲解

了解了for循环的语法和执行流程,接下来编码实现计算1到100所有整数的和。

第一步,通过for语句的语法,in后面需要是一个可迭代对象,1到100这100个数在Python中可以使用列表表示,比如1到5的列表可以表示成[1, 2, 3, 4, 5] 。先结合列表简单打印出5次“断点社区,晚上好”:

整数列表 = [1, 2, 3, 4, 5]
for i in整数列表:
    print('断点社区,晚上好')

运行结果:

断点社区,晚上好
断点社区,晚上好
断点社区,晚上好
断点社区,晚上好
断点社区,晚上好

下面升级一下,计算列表[1, 2, 3, 4, 5]各项相加之和:

整数列表 = [1, 2, 3, 4, 5]
和 = 0
for i in整数列表:
    和 += i
print("1到5各数相加之和 =", 和)

运行结果:

1到5各数相加之和 = 15

搞定了1到5各数的相加,要实现1到100各数相加,直接修改整数列表会很麻烦。这时可以用到Python的内置函数range() ,它可以为指定的整数生成一个数字序列(也就是可迭代对象)。range()语法如下:

  1. range(stop) :只有一个参数时,会生成从0到stop的数字,但不包含stop。
  2. range(start, stop) :除了指定结束数值,还指定了开始数值。
  3. range(start, stop, step) :还允许指定步长,这个值默认是1,即生成的数字序列中,每个元素的间隔为1 。步长除了可以是正整数,还可以是负整数。

range和for的关系非常紧密,它们经常同时出现。range()的参数只能是整数。通过代码熟悉一下range()函数:

for i in range(5):
    print(i)
for i in range(1, 5):
    print(i)
for i in range(0, 5, 2):
    print(i)

运行结果可能会让人疑惑为什么没有5,这是因为range()函数会提供一个数字列表,从给定的第一个数开始,在给定的最后一个数之前结束。编写代码时必须考虑这一点,正确调整范围来得到想要的循环次数。

有了range,实现1到100各数相加的和就很容易了:

和 = 0
for i in range(100):
    和 += i
print('1到100各数相加的和 = ', 和)

运行结果:

1到100各数相加的和 = 4950

但这里求得的和不对,要将range(100)改成range(101) ,改进代码如下:

和 = 0
for i in range(101):
    和 += i
print('1到100各数相加的和 = ', 和)

运行结果:

1到100各数相加的和 = 5050

range()和for循环配合紧密,但for循环还可以跟其他很多对象配合完成各种重复工作,下面讲讲for循环的两个小伙伴——列表和字符串。

列表

在Python中,可包含其他对象的对象,称之为“容器”。容器是一种数据结构。常用的容器主要划分为两种:序列(如:列表、元组等)和映射(如:字典)。序列中,每个元素都有下标,它们是有序的,有通用的操作方法,如索引、长度、组合(序列相加)、重复(乘法)、分片、检查成员、遍历、最小值和最大值。映射中,每个元素都有名称(又称“键”),它们是无序的。除了序列和映射,还有一种容器——“集合”需要注意。

列表(list)是Python最基本的数据结构之一,具有如下特点:

  1. 有序的数据结构:可以通过索引(也称下标)访问内部数据。
  2. 可变的数据类型:可以随意添加、删除和更新列表内的数据,列表对象会自动伸缩,确保内部数据无缝隙有序排列。
  3. 内部数据统称为元素,元素的值可以重复,可以为任意类型的数据,如数字、字符串、列表、元组、字典和集合等。

列表的字面值使用中括号 ( [] ) 包含所有元素,元素之间使用英文逗号 ( , ) 分隔。

(一)创建列表

创建列表有两种方法:

  1. list(iterable)类型构造函数:参数iterable是可迭代对象(字符串、列表、元组、集合和字典等)。
  2. [元素1,元素2,元素3,⋯]:指定具体的列表元素,元素之间以逗号分隔,列表元素需要使用英文中括号 [] 括起来。

例如:

列表1 = [1, 2, 3, 4, 5, 6]  # 使用英文中括号 [] 创建列表
列表2 = ['youbafu', 32, True]  # 元素类型可以不一样
列表3 = list('youbafu')  # 字符串转字符列表
print(列表1)
print(列表2)
print(列表3)

运行结果:

[1, 2, 3, 4, 5, 6]
['youbafu', 32, True]
['y', 'o', 'u', 'b', 'a', 'f', 'u']

(二)常用操作

以列表[1, 2, 3, 4, 5, 6]为例,列表下标从0开始,第二个下标是1,依此类推。

image-20250309191737079.png

索引也可以从尾部开始,最后一个元素的索引为 -1,往前一位为 -2,以此类推。

image-20250309191806086.png

认识了列表的下标,下面通过代码学习一下列表的常用操作方法:

num_list = [1, 2, 3, 4, 5, 6]
# 按下标取值
print(num_list[0], num_list[5])
print(num_list[-6], num_list[-1])
# 使用index()方法获取2在列表num_list中首次出现的下标
index = num_list.index(2) 
print(index)
# 使用count()方法获取2在列表num_list中出现的次数
count = num_list.count(2) 
print(count)
# 使用len()方法获取列表判断长度
length = len(num_list)
print(length)
# 当且仅当列表为空,在if条件中被判断为False
if num_list:
    print("列表num_list不为空")
lst0 = []
if not lst0:
    print("列表lst0为空")
# 列表是否包含某个元素 
# 使用in关键字可以检测一个列表中是否存在指定的值,如果存在,则返回True;否则返回False。使用not in关键字也可以检测一个值,返回值与in关键字相反。
print(2 in num_list, 6 not in num_list)
# 使用min()和max()方法获取最小值和最大值
print(min(num_list), max(num_list)) 

运行结果:

1 6
1 6
1
1
6
列表num_list不为空
列表lst0为空
True False
1 6

除了按指定索引获取列表元素,还可以通过random模块中的choice()方法从列表中随机获取一个元素。结合猜数字游戏,假如谜底数字是指定列表中的一个值,实现代码如下:

# 导入随机模块
import random
谜底值列表 = [2, 5, 9, 10, 100]
谜底数字 = random.choice(谜底值列表)
print(谜底数字)

运行结果:

9

(三)更新、添加

image-20250309191833210.png

  1. 更新元素:通过索引来对列表的元素进行修改或更新。例如:
列表 = [1, 2, 3, 4, 5]
列表[0] = 20  # 将列表第一个元素改成20
print('更新列表第一个元素后', 列表)

运行结果:

更新列表第一个元素后 [20, 2, 3, 4, 5]
  1. 添加元素:有append()方法、extend()方法、insert()方法、+运算符、*运算符。
    • append()方法、extend()方法、+运算符、*运算符都是往列表的末尾添加数据。
    • insert()方法则可以添加元素到指定位置,insert()方法有两个参数:第一个参数指定待插入的位置(索引值),第二个参数是待插入的元素值。

append()方法:

列表对象的append()方法用于在列表的末尾追加元素,语法如下:
list_name.append(obj)

其中,list_name为要添加元素的列表名称,obj为要添加到列表末尾的对象。例如:

列表 = [20, 10, 50, 30]
列表.append(80)
print(列表)

运行结果:

[20, 10, 50, 30, 80]

extend()方法:

append()方法是向列表中添加一个元素,如果想要将一个迭代对象中的全部元素添加当前列表对象的尾部,可以使用列表对象的extend()方法实现,用法如下:
list_name.extend(seq)

其中,list_name为当前列表;seq为要添加的迭代对象。语句执行后,seq的内容将追加到list_name的后面,例如:

列表 = [20, 10, 50, 30]
列表.extend([1, 2, 3])
print(列表)

运行结果:

[20, 10, 50, 30, 1, 2, 3]

insert()方法:

使用列表对象的insert()方法可以将元素添加到指定下标位置。语法格式如下:
list_name.insert(index, obj)

参数index表示插入的索引位置;obj表示要插入列表中的对象。该方法没有返回值,只是在原列表指定位置插入对象。

列表 = [1, 2, 3, 4, 5]
列表.insert(0, 6)
print(列表)

运行结果:

[6, 1, 2, 3, 4, 5]

+运算符:

与extend()方法功能类似,使用+运算符可以将两个列表对象合并为一个新的列表对象。
列表 = [20, 10, 50, 30]
列表 = 列表 + [1, 2, 3]
print(列表)

运行结果:

[20, 10, 50, 30, 1, 2, 3]

注意:+运算符实际上并不是在原列表中添加元素,而是创建了一个新列表,并将原列表中的元素和参数对象依次复制到新列表中。由于涉及大量元素的复制,该操作速度较慢,在涉及大量元素添加时不建议使用该方法。

*运算符:

使用*运算符可以扩展列表对象,将列表与整数相乘,生成一个新列表,新列表是原列表中元素的重复。
列表 = [1, 2, 3, 4, 5]
列表 = 列表 * 3
print(列表)

运行结果:

[1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5]

(四)删除

从列表中删除元素,可以有三种方法实现:del命令、pop()方法、remove()方法、clear()方法。删除元素主要有两种情况:一种是根据索引删除;另一种是根据元素值进行删除。

  1. remove()方法:使用列表对象的remove()方法可以删除首次出现的指定元素。语法格式如下:
list_name.remove(obj)

参数obj表示列表中要移除的对象,即列表元素的值。该方法没有返回值,如果列表中不存在要删除的元素,则抛出异常。

num_list = [1, 2, 2, 3, 4]
num_list.remove(2)  # 删除首次出现的2
print(num_list)

运行结果:

[1, 2, 3, 4]
  1. pop()方法:使用列表的pop()方法可以删除并返回指定位置上的元素。语法格式如下:
list_name.pop([index=-1])

参数index表示要移除列表元素的索引值,默认值为 -1,即删除最后一个列表值。如果给定的索引值超出了列表的范围,将抛出异常。

num_list = [1, 2, 2, 3, 4]
num_list.pop()  # 默认删除列表最后一个元素
print(num_list)
num_list.pop(0)  # 删除列表第一个元素
print(num_list)

运行结果:

[1, 2, 2, 3]
[2, 2, 3]
  1. del命令:可以使用del命令来删除列表指定位置的的元素。
num_list = [1, 2, 3, 4]
del num_list[0]
print(num_list)

运行结果:

[2, 3, 4]
  1. clear()方法:使用列表对象的clear()方法可以删除列表中所有的元素。该方法没有参数,也没有返回值。
num_list = [1, 2, 3, 4]
num_list.clear()
print(num_list)

运行结果:

[]

列表删除方法的总结:pop()方法是删除索引对应的值,remove()方法是删除列表对象中最左边的一个值。pop()方法针对的是元素的索引进行操作,remove()方法针对的是元素的值进行操作。del是一条命令,而不是方法,使用频率不及pop()和remove()方法。

(五)遍历

可以直接遍历列表内容,当需要获取元素值和对应下标的时候更推荐使用enumerate()函数,enumerate()函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在for循环当中,例如:

lst = list('Python')
for i in lst:
    print(i)

输出结果:

P
y
t
h
o
n
for i, v in enumerate(lst):
    print(i, v)

输出结果:

0 P
1 y
2 t
3 h
4 o
5 n

(六)排序

使用列表对象的sort()方法可以进行自定义排序,此时列表对象本身被修改,list_name.sort()方法包含2个可选参数(设定比较关键字,应用情况较为复杂,暂时不用理解),先学习设定排序方式,默认是升序,想要降序排列时,添加参数reverse=True即可,sort()方法无返回值。

num_list = [2, 32, 344, 6, 56, 876]
num_list.sort() # 默认升序
print(num_list)
num_list.sort(reverse=True) # 降序
print(num_list)

运行结果:

[2, 6, 32, 56, 344, 876]
[876, 344, 56, 32, 6, 2]

(七)切片

切片(slice)语法的引入,使得Python的列表真正地走向了高端。切片让我们能够非常方便地来处理列表元素。 现在要求将列表list1中的三个元素取出来,放到列表list2里面。学了前面的知识,可以使用“笨”方法来实现:

num_list = [1, 2, 3, 4, 5]
num_list2 = [num_list[0], num_list[1], num_list[2]]
print("新列表:", num_list2)

运行结果:

新列表: [1, 2, 3]

如果学会了切片,会大大简化这种操作:

num_list = [1, 2, 3, 4, 5]
num_list2 = num_list[0:3]
print("切片出来的列表:", num_list2)

运行结果:

切片出来的列表: [1, 2, 3]

使用列表切片也可以“偷懒”,Python的作者以及Python社区的小伙伴们已经想到了便捷方案:

list = [1, 2, 3, 4, 5, 6]
print(list[:3])
print(list[3:])
print(list[:]) # 复制列表
print(list[::-1]) # 翻转列表

运行结果:

[1, 2, 3]
[4, 5, 6]
[1, 2, 3, 4, 5, 6]
[6, 5, 4, 3, 2, 1]

如果省略了开始位置,Python会从0这个位置开始。同样道理,如果要得到从指定索引值到列表末尾的所有元素,把结束位置也省去即可。如果啥都没有,只有一个冒号,Python将返回整个列表的拷贝。注意:列表切片并不会修改列表自身的组成结构和数据,它其实是为列表创建一个新的拷贝(副本)并返回。

字符串

编程学习者接触到的第一条语句print('hello world')就已经认识和使用字符串了,字符串几乎是所有编程语言在项目开发过程中,涉及最多的一块内容。大部分项目的运行结果,都需要以文本的形式展示给客户,比如财务系统的总账报表;电子游戏的比赛结果,火车站的列车时刻表等。这些都是经过程序精密的计算、判断和梳理,将我们想要的内容以文本形式直观地展示出来。有人曾调侃说,程序员开发一个项目,基本上就是在不断地处理字符串。虽然有点夸张,但也足够说明字符串的应用广泛。今天断点社区来详细讲解一下Python的字符串。

字符串使用单引号包裹起来的内容,也可以使用双引号,但务必要成对编写,不能一边是单引号而另一边是双引号。

(一)常用表示方式

字符串有三种表示方式:普通字符串、原始字符串和长字符串。

image-20250309192038281.png

  1. 普通字符串:指用单引号(')或双引号(")括起来的字符串。在使用单引号定义的字符串中,可以直接包含双引号,而不必进行转义;而在使用双引号定义的字符串中,可以直接包含单引号,而不必进行转义。即外单内双,外双内单。如果想在字符串中包含一些特殊的字符,例如换行符、制表符等,在普通字符串中就需要转义,前面要加上反斜杠(),这叫作字符转义。

image-20250309192117876.png

编码中比较常见的转义符如下:

字符表示 Unicode编码 说明
\t \u0009 水平制表符
\n \u000a 换行
\r \u000d 回车
\" \u0022 双引号
\' \u0027 单引号
\ \u005c 反斜线

简单的来看看代码:

s = 'Hi 断点社区'
print(s)
s = 'Hi \'\" \n 断点社区' # 了解转义符
print(s)

运行结果:

Hi 断点社区
Hi '" 
断点社区
  1. 原始字符串:原生字符串的出现目的是解决在字符串中显示特殊字符。在原生字符串里,所有的字符都直接按照字面的意思来使用,不支持转义序列和非打印的字符。可以使用r或R来定义原生字符串,这个操作符必须紧靠在第一个引号前面。!image-20250309192203154.png

    语法格式如下:

r"原生字符串"
R"原生字符串"

定义文件路径的字符串时,会使用很多反斜杠,如果每个反斜杠都用歧义字符串来表示会很麻烦,可以采用下面代码来表示:

# str1 = "C:\Users\youbafu\pythonProjects" # 直接写\U会报错 因为\U是转义符
str2 = "C:\\Users\\youbafu\\pythonProjects" # 转义字符
str3 = r"C:\Users\youbafu\pythonProjects" # 不转义,使用原生字符串
# print(str1)
print(str2) # 输出:C:\Users\youbafu\pythonProjects
print(str3) # 输出:C:\Users\youbafu\pythonProjects
  1. 长字符串:如果要使用字符串表示一篇文章,其中包含了换行、缩进等排版字符,则可以使用长字符串表示。对于长字符串,要使用三个单引号 ''' 内容 ''' 或三个双引号 """ 内容 """ 包起来,例如:
咏鹅 = """
咏鹅
鹅,鹅,鹅,
曲项向天歌。
白毛浮绿水,
红掌拨清波。
"""
print(咏鹅)

输出结果:

咏鹅
鹅,鹅,鹅,
曲项向天歌。
白毛浮绿水,
红掌拨清波。

(二)字符串格式化

Python字符串格式化有三种方法:%、format()与f-strings。

  1. str.format()格式化:这种方式是在Python 2.6引入的,使用占位符将要想将表达式的计算结果插入字符串中,则需要用到占位符。对于占位符,使用一对大括号({})表示。在占位符中可以有参数序号,序号从0开始。序号0被format()方法中的第1个参数替换;序号1被format()方法中的第2个参数替换,以此类推。在占位符中还可以有参数名,可以根据参数名替换占位符。
name = '断点社区'
val = '游戏安全训练营'
print('{0} 的 {1} 起航了,在 {1} 中,带您领略Python编程的优雅和强大。'.format(name, val))

运行结果:

断点社区 的 游戏安全训练营 起航了,在 游戏安全训练营 中,带您领略Python编程的优雅和强大。

格式化控制符在占位符中还可以有格式化控制符,对字符串的格式进行更加精准的控制。字符串的格式化控制符及其说明如下:

格式控制符 说明
s 字符串
d 十进制整数
f, F 十进制浮点数
g、G 十进制整数或浮点数
e、E 科学计算法表示浮点数
o 八进制整数,符号是小英文字母o
x、X 十六进制整数,x是小写表示,X是大写表示

格式化控制符位于占位符索引或占位符名字的后面,之间用冒号分隔,语法:{参数序号:格式控制符} 或{参数名:格式控制符}。示例:

money = 158926.1564
name = '托尼老弟'
print('{0} 今年的收入达到了 {1:0.3f}元'.format(name, money))
print('{0} 今年的收入达到了 {1:e}元'.format(name, money))

运行结果:

托尼老弟 今年的收入达到了 158926.156元
托尼老弟 今年的收入达到了 1.589262e+05元
  1. f-Strings格式化:f-Strings是一种改进版格式化方式,从Python 3.6版本开始引入了新的字符串格式化方式。f-strings也称作“格式化的字符串字面量”,它是一个带有f前缀的字符串,通过大括号嵌入所需的Python表达式,这些表达式的具体值是在运行时确定的,背后依赖的也是嵌入对象的format()接口。f-strings的句法类似于str.format(),但要更简洁。由于f-strings是在运行时计算具体值的,得以在字符串中嵌入任意有效的Python表达式,从而写出更优雅的代码。
money = 158926.1564
name = '托尼老弟'
print(f'{name} 今年的收入达到了 {money:0.3f}元')
print(f'{name} 今年的收入 {money:e}元, 明年的目标是 {money * 2.5:0.2f}')

运行结果:

托尼老弟 今年的收入达到了 158926.156元
托尼老弟 今年的收入 1.589262e+05元, 明年的目标是 397315.39

字符串的常用方法

Python字符串提供了非常丰富且实用的方法。下表总结了字符串的所有方法及对应的含义:

方法 含义
capitalize() 将字符串的第一个字符修改为大写,其他字符全部改为小写
casefold() 将字符串的所有字符修改为小写
center(width[,fillchar]) 当字符个数大于width时,字符串不变;当字符个数小于width时,字符串居中,并在左右填充空格以达到width指定宽度;fillchar参数可选,指定填充的字符(默认是空格)
count(sub[,start[,end]]) 返回sub参数在字符串里边出现的次数;start和end参数可选,指定统计范围
encode(encoding='utf-8',errors='strict') 以encoding参数指定的编码格式对字符串进行编码,并返回errors参数指定出错时的处理方式,默认是抛出UnicodeError异常,还可以使用'ignore'、'replace'、'xmlcharrefreplace'、'backslashreplace'等处理方式
endswith(sub[,start[,end]]) 检查字符串是否以sub参数结束,如果是返回True,否则返回False;start和end参数可选,指定范围
expandtabs(tabsize=8) 把字符串中的制表符(\t)转换为空格代替
find(sub[,start[,end]]) 检查sub参数是否包含在字符串中,如果有则返回第一个出现位置的索引值,否则返回-1;start和end参数可选,表示范围
index(sub[,start[,end]]) 跟find()方法一样,不过该方法如果找不到将抛出一个ValueError异常
isalnum() 如果字符串仅由字母或数字构成则返回True,否则返回False
isalpha() 如果字符串仅由字母构成则返回True,否则返回False
isdecimal() 如果字符串仅由十进制数字构成则返回True,否则返回False
isdigit() 如果字符串仅由数字构成则返回True,否则返回False
islower() 如果字符串仅由小写字母构成则返回True,否则返回False
isnumeric() 如果字符串仅由数值构成则返回True,否则返回False
isspace() 如果字符串仅由空白字符构成则返回True,否则返回False
istitle() 如果是标题化(所有的单词均以大写字母开始,其余字母皆小写)字符串则返回True,否则返回False
isupper() 如果字符串仅由大写字母构成则返回True,否则返回False
join(iterable) 以字符串作为分隔符,插入到iterable参数迭代出来的所有字符串之间;如果iterable中包含任何非字符串值,将抛出TypeError异常
ljust(width[,fillchar]) 当字符个数大于width时,字符串不变;当字符个数小于width时,左对齐字符串,并在右边填充空格以达到width指定宽度;fillchar参数可选,指定填充的字符(默认是空格)
lower() 将字符串的所有大写字母修改为小写字母
lstrip([chars]) 删除字符串左边的所有空白字符;chars参数可选,指定待删除的字符集
partition(sep) 找到sep参数第一次出现的位置,并将字符串切分成一个三元组(sep前面的子字符串,sep,sep后面的子字符串);如果字符串中不包含sep,则返回三元组(原字符串,"", "")
replace(old,new[,count]) 将字符串中的old参数指定的字符串替换成new参数指定的字符串;count参数可选,表示最多替换次数不超过count
rfind(sub[,start[,end]]) 类似于find()方法,不过是从右边开始查找
rindex(sub[,start[,end]]) 类似于index()方法,不过是从右边开始查找
rjust(width[,fillchar]) 当字符个数大于width时,字符串不变;当字符个数小于width时,右对齐字符串,并在右边填充空格以达到width指定宽度;fillchar参数可选,指定填充的字符(默认是空格)
rpartition(sep) 类似于partition()方法,不过是从右边开始查找
rstrip([chars]) 删除字符串右边的所有空白字符;chars参数可选,指定待删除的字符集
split(sep=None,maxsplit=-1) 以空白字符作为分隔符对字符串进行分割;sep参数指定分隔符,默认是空白字符;maxsplit参数设置最大分割次数,默认是不限制
splitlines([keepends]) 以换行符作为分隔符对字符串进行分割;keepends参数设置最大分割次数
startswith(prefix[,start[,end]]) 检查字符串是否以prefix参数开头,如果是则返回True,否则返回False;start和end参数可选,表示范围
strip([chars]) 删除字符串前边和后边所有空白字符;chars参数可选,指定待删除的字符集
swapcase() 将字符串中所有的大写字母修改为小写,将小写字母修改为大写
title() 以标题化(所有的单词均以大写字母开始,其余字母皆小写)的形式格式化字符串
translate(table) 根据table的规则(可以由str.maketrans('a', 'b')定制)转换字符串中的字符
upper() 将字符串的所有小写字母修改为大写字母
zfill(width) 当字符个数大于width时,字符串不变;当字符个数小于width时,返回长度为width的字符串,原字符串右对齐,前边用0进行填充

这里选几个常用的字符串方法给大家演示一下用法,其他的可以根据上述文档的注释照葫芦画瓢。注意:只要涉及字符串修改的方法,并不是修改原字符串,而是返回字符串修改后的一个拷贝。isdigit()方法检测字符串是否由数字组成,如果字符串只包含数字,则返回True;否则返回False。lower()方法用于将字符串中所有的英文字母修改为小写。

str = "YouBaFu Love Python!"
print(f'str.isdigit(): {str.isdigit()}')
print(f'str.lower(): {str.lower()}')
print(f"str.find('y'): {str.find('y')}")
print(f'str.replace("Love", "Like"): {str.replace("Love", "Like")}')
print(f"str.split(' '): {str.split(' ')}")

运行结果:

str.isdigit(): False
str.lower(): youbafu love python!
str.find('y'): 14
str.replace("Love", "Like"): YouBaFu Like Python!
str.split(' '): ['YouBaFu', 'Love', 'Python!']
str3 = " https://www.bpsend.net\t\n\r"
print(f"原字符串: {str3}。")
print(f"字符串 : {str3.strip()}。")
str4 = ".@.湖南长沙@...."
print(f"原字符串: {str4}。")
print(f"字符串 : {str4.strip('@.')}。")

运行结果:

原字符串 https://www.bpsend.net
字符串 : https://www.bpsend.net。
原字符串: .@.湖南长沙@....。
字符串 : 湖南长沙。
五常 = ['中国', '俄罗斯', '美国', '英国', '法国']
print(f'{",".join(五常)}')
print(f"{' - '.join(五常)}")

运行结果:

中国,俄罗斯,美国,英国,法国
中国 - 俄罗斯 - 美国 - 英国 - 法国

join()方法的语法可能会让人觉得奇怪,被拼接的对象应该放在join()方法的左侧更合适。但join()方法是字符串对象的方法,所以只能这么写。另外还有一个重要的原因是,join()的参数支持一切可迭代对象(如列表、元组、字典、文件、集合或生成器等)。更重要一点是join()方法代替加号(+)来拼接字符串,这是因为使用加号(+)去拼接大量的字符串,效率相对会比较低,这种操作会频繁进行内存复制和触发垃圾回收机制。

课程总结

本节课的学习内容可以说是编程的核心要点,循环、列表和字符串,在编程中应用的非常广泛。关于循环只是讲解了其中的一部分,还有while条件循环、循环嵌套都没有进行讲解,这些都会在后面的课程进行讲解。列表和字符串方面也是主要介绍了常用的操作,在后续的课程中也会结合示例对列表和字符串进行学习,同学们想要掌握好课程知识的使用,就得多多练习。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×

0

主题

41

回帖

117

积分

注册会员

积分
117
发表于 2025-3-19 11:01:49 | 显示全部楼层

回帖奖励 +10 断点币

学废了~
回复

使用道具 举报

0

主题

41

回帖

117

积分

注册会员

积分
117
发表于 2025-3-20 09:48:56 | 显示全部楼层
学废了~
回复

使用道具 举报

0

主题

9

回帖

65

积分

新手上路

积分
65
发表于 2025-3-20 22:50:34 | 显示全部楼层

回帖奖励 +10 断点币

学习签到!
回复

使用道具 举报

0

主题

189

回帖

145

积分

注册会员

积分
145
发表于 昨天 08:54 | 显示全部楼层

回帖奖励 +10 断点币

学习报到!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|断点社区 |网站地图

GMT+8, 2025-4-4 07:05 , Processed in 0.128866 second(s), 27 queries , Yac On.

Powered by XiunoBBS

Copyright © 2001-2025, 断点社区.

快速回复 返回顶部 返回列表