【软件测试】4.编程数据结构python学习day05

3 容器

学习目标
1. 能够说出容器类型有什么用
2. 能够说出常用 Python 容器的名字
3. 能够说出切片语法的用途
4. 能够说出容器中的索引指的是什么
5. 能够说出如何定义一个字符串
6. 能够说出字符串容器的特性
7. 能够说出至少5个字符串方法名字和作用
8. 能够使用切片语法获得指定索引区间的子串
9. 能够说出如何使用 while 和 for 循环来遍历字符串
10. 能够说出如何定义一个列表
11. 能够说出列表容器和字符串容器的区别
12. 能够说出至少5个列表方法名字和作用
13. 能够使用切片语法获得列表指定索引区间的元素
14. 能够说出如何使用 while 和 for 循环来遍历列表中的元素
15. 能够说出如何定义一个列表
16. 能够说出元组和列表的区别
17. 能够说出如何使用 while 和 for 循环来遍历元组中的元素
18. 能够说出元组支持哪些操作
19. 能够说出如何定义一个字典
20. 能够说出字典和列表的区别
21. 能够说出如何使用 for 循环来遍历列表中的键、值和键值
22. 能够说出字典键和值的特点

容器分类?

学习容器类型就是在学习容器的特点、以及容器对元素的操作 

为了便于学习, 我们根据不同容器的特性, 将常用容器分为序列式容器和非序列式容器

1. 序列式容器中的元素在存放时都是连续存放的, 也就是序列式容器中, 除了第一个元素的前面没有元素,
最后一个元素的后面没有元素, 其他所有的元素前后都有一个元素. 包括字符串、列表、元组

2. 非序列式容器在存储元素时不是连续存放的, 容器中的任何一个元素前后都可能没有元素. 包括字典、集合

  • 序列式容器支持根据索引(下标)访问元素, 而非序列式容器不支持索引(下标)的方式访问元素 
  • 序列式容器支持切片操作, 而非序列式容器不支持切片操作

什么是切片?
通过索引可以获取序列式容器中的某个元素, 切片语法主要用于获得一个指定索引区间的多个元素, 例如获取从索引值为 到索引值为 之间的所有元素 

上面所说的 "方法", 就是我们所说所学的函数, 本质上 "方法""函数"指的是同一个东西

3.1 字符串

学习目标
1. 能够说出如何定义一个字符串
2. 能够说出字符串容器的特性
3. 能够说出如何对字符串中的子串进行替换
4. 能够说出如何对字符串中的字符串进行查找
5. 能够说出如何去除字符串两侧的空格
6. 能够说出如何判断字符串是否全部为字母
7. 能够说出字符串如何根据某个分隔符进行切分
8. 能够使用切片语法获得指定索引区间的子串
9. 能够说出如何使用 while 和 for 循环来遍历字符串

3.1.1 字符串语法格式

如何定义字符串?
1. 字符串使用一对单引号来定义
2. 字符串使用一对双引号来定义

扫描二维码关注公众号,回复: 9566896 查看本文章

3.1.2 字符串操作

1 字符串遍历
字符串属于序列式容器, 支持依据索引的操作
注意: 序列式容器的索引都是以 0 开始的, 并不是从 1 开始

my_string = '我叫做司马相如,我今年16岁了!'
i = 0
while i < len(my_string):
    print(my_string[i], end=' ')
    i += 1

Python 是一门简单易用的语言, 对于容器的遍历, 提供了另外一种简单方式, for 循环

my_string = '我叫做司马相如,我今年16岁了!'
for ch in my_string:
  print(ch, end=' ')

2 字符串替换

使用字符串的 replace 方法完成上面两步. 该方法默认会将字符串中所有指定字符或子串替换为新的字符串,
我们可以指定第三个参数, 替换多少次

poetry = '远看泰山黑乎乎, 上头细来下头粗. 茹把泰山倒过来, 下头细来上头粗. 茹'
# 将所有的 '茹' 替换为 '如'
right_poetry = poetry.replace('', '')
# 只替换第一次出现的 '茹'
right_poetry = poetry.replace('', '', 1)

3 字符串查找和切片

现在有一邮箱地址如下:
user_email = '[email protected]
我们希望从邮箱地址字符串中获取用户名和邮箱后缀名, 那么这个问题如何解决?
1. 由分析可知, @符号之前为用户名, @符号之后的内容为邮箱后缀名
2. 首先获得 @ 符号的位置, 从开始位置截取到 @ 符号位置, 即可获得用户
3. 从 @ 符号位置开始截取到字符串最后, 即可获得邮箱后缀名

如何获得 @ 符号的位置?
可以使用字符串提供的 find 方法, 该方法可返回查找字符串第一次出现的位置, 查找字符串不存在则会返回-1
备注: find 方法默认从字符串开始位置(0位置)开始查找, 我们也可以指定从哪个位置范围开始查找, 设置 find 的
第二个参数表示从哪个位置开始查找, 第三个参数, 表示查找结束位置

poetry = '远看泰山黑乎乎, 上头细来下头粗. 茹把泰山倒过来, 下头细来上头粗.'
# 从 10 位置开始查找 '上'
position = poetry.find('', 10, 100)

如何获得指定范围的字符串?

字符串属于序列式容器, 可以根据索引获得某一个字符, 也可以根据由两个索引标识的区间获得区间内的字符序列

poetry = '远看泰山黑乎乎, 上头细来下头粗. 茹把泰山倒过来, 下头细来上头粗.'
# 从0位置开始到7位置之前, 不包含7位置字符
print(poetry[0: 7])
# 起始位置不写, 默认就是0
print(poetry[: 7])
# 从0位置开始到最后, 结束位置不写默认字符最后一个位置的下一个位置.
print(poetry[9:])
# 步长, 每隔2个字符选取一个字符, 组成一个序列
print(poetry[0: 7: 2])
# 如果步长为负数, 那么起始位置参数和结束位置参数就会反过来.
print(poetry[6:: -1])
# 位置也可以使用负数
print(poetry[-3: -1])
print(poetry[-3:])
print(poetry[::-1])
View Code

下面我们看看如何解决这个问题?

user_email = '[email protected]'
# 查找 @ 位置
position = user_email.find('@')
# 根据 postion 截取用户名和邮箱后缀
user_name = user_email[: position]
mail_suffix = user_email[position + 1:]

另外一种解决该问题的思路

1. 先根据 @ 符号将邮箱分割成两部分
2. 分别获取每一部分, 即可得到用户名和邮箱后缀

user_email = '[email protected]'
# 判断 user_email 是否有多个 @
at_count = user_email.count('@')
if at_count > 1:
    print('邮箱地址不合法, 出现了多个@符号!')
else:
    # 根据 @ 将字符串截取为多个部分
    result = user_email.split('@')
    # 输出用户名和邮箱后缀
    print(result[0], result[1])

4 字符串去除两侧空格、是否为字母

我们经常在各个网站进行会员注册, 一般注册的处理流程如下:
1. 获得用户输入的注册用户名
2. 用户在输入用户名时, 可能在用户名两个不小心输入多个空格. 我们需要去除用户名两侧的空格
3. 判断用户名是否全部为字母(用户名的组成由我们来规定, 这里我们规定必须是字母)
4. 处理完毕之后, 显示注册成功

# 获得用户注册用户名
register_username = input('请输入您的用户名:')
# 去除用户名两侧的空格
register_username = register_username.strip()
# 判断字符串是否全部为字母
if register_username.isalpha():
    print('恭喜您:', register_username, '注册成功!')
else:
    print('注册失败!')

猜你喜欢

转载自www.cnblogs.com/MarlonKang/p/12407651.html
今日推荐