- 容器类型介绍
- 字符串切片
- 字符串相关函数
- len()
- find()
- rfind()
- index()
- rindex()
- 字符串案例
- 列表介绍
- 列表的CURD操作
1.容器类型入门
"""
容器类型介绍:
概述:
容器类型指的是用来 同时存储 多个元素 的一种类型, 即: 存储多个值的.
常用的容器类型:
字符串: str
列表: list
元组: tuple
字典: dict
集合: set
回顾之前学习的 "单值"类型:
整型: int
浮点型: float
布尔型: bool
字符串介绍:
概述:
它属于容器类型的一种, 可以同时存储多个字符. 例如: 'abc', 就是由字符'a', 'b', 'c'组成的.
特点:
1. 字符串值必须用引号包裹, 单双引号均可.
2. 字符串中的每个字符都是有编号(脚标, 下标, 索引),
正向索引: 是从左往右的顺序, 从0开始数.
逆向索引: 是从右往左的顺序, 从-1开始数.
格式:
格式1: 单双引号包裹即可, 不能换行.
格式2: 可以用三引号包裹, 支持换行.
"""
s1 = '张三'
s2 = "李四"
print(s1, s2)
print('-' * 31)
s3 = "I'm Tom!"
print(s3)
s4 = 'I\'m Tom!'
print(s4)
print('-' * 31)
sql1 = """
select
*
from
student;
"""
print(sql1)
sql2 = '''
select
*
from
teacher
'''
print(sql2)
2.字符串-索引
"""
字符串的索引介绍:
概述:
索引也叫下标, 脚标, 编号, 目的是: 方便我们快速去字符串中查找对应字符的.
格式:
字符串[编号] 根据编号, 从字符串中获取对应的字符.
解释:
字符串中每个字符都是有编号的, 从左往右数, 叫: 正向索引, 从0开始. 从右往左数, 叫: 逆向索引, 从-1开始.
"""
s1 = 'abcdefg'
print(s1[3])
print(s1[-4])
print(s1[5])
print(s1[-2])
3.字符串-切片
"""
字符串切片介绍:
概述:
所谓的切片, 就是去字符串中截取出指定的部分, 不仅字符串支持切片, 列表, 元组等也支持切片.
格式:
[起始索引:结束索引:步长]
格式解释:
1. 如果不写起始索引, 默认: 从索引0开始.
2. 如果不写结束索引, 默认: 是字符串的长度, 即: 能取到字符串的最大索引
3. 如果不写步长, 默认是: 1
4. 上述的格式中, 是包左不包右的, 即: 包括起始索引, 不包括结束索引.
5. 上述的格式中, 不仅支持正常索引(从左往右), 支持逆向索引(从右往左).
例如:
s1 = 'a b c d e f g' # 假设没有空格, 即: 'abcdef', 加空格, 是为了更好的和下述索引对应.
正向索引: 0 1 2 3 4 5 6
逆向索引: -7 -6 -5 -4 -3 -2 -1
"""
s1 = 'abcdefg'
print(s1[2:5])
print(s1[2:5:1])
print(s1[2:])
print(s1[:5])
print(s1[:5:2])
print(s1[-1:])
print(s1[-6:-1])
print('-' * 31)
print(s1[-3:-5])
print(s1[-3:-5:-1])
print(s1[-3::-2])
print(s1[::-1])
4.字符串-常用函数
"""
函数介绍:
可以理解为就是Python已经定义好的规则, 我们直接拿过来用就可以了.
简单理解: 函数 = 工具
字符串常用函数介绍:
len() # 获取字符串的长度.
find() # 查找子串在字符串中, 第一次出现的位置, 找不到就返回-1
格式:
字符串.find(字符串, 起始索引, 结束索引) 起始索引和结束索引是指定查找范围, 不写就是在整个字符串中查找.
rfind() # 查找子串在字符串中, 最后一次出现的位置, 找不到就返回-1, 格式同上.
index() # 作用和find()一样, 区别在于: 找不到就报错.
rindex() # 作用和rfind()一样, 区别在于: 找不到就报错.
replace(旧字符串, 新字符串, 个数) # 用新字符串替换旧字符串, 替换几个(不写就替换所有).
split(切割字符, 个数) # 按照指定字符切割字符串, 指定个数表示切几个, 不指定就切所有.
count() # 统计次数.
"""
s1 = "hello and python and sql and linux"
print(len(s1))
print('-' * 31)
print(s1.find('java'))
print(s1.find('and'))
print(s1.find('and', 7))
print(s1.find('and', 7, 19))
print(s1.find('and', 7, 20))
print('-' * 31)
print(s1.rfind('java'))
print(s1.rfind('and'))
print(s1.rfind('and', 9))
print(s1.rfind('and', 2, 21))
print('-' * 31)
print(s1.index('and'))
print(s1.index('and', 7))
print(s1.index('and', 7, 20))
print('-' * 31)
print(s1.rindex('and'))
print(s1.rindex('and', 9))
print(s1.rindex('and', 2, 21))
print('-' * 31)
s2 = s1.replace('and', 'or', 2)
print(s2)
s3 = s1.replace('and', 'or')
print(s3)
print('-' * 31)
list1 = s1.split('and')
print(list1)
list2 = s1.split('and', 2)
print(list2)
print('-' * 31)
max_str = "hello and python and sql and linux"
min_str = 'and'
result1 = max_str.count(min_str)
print(result1)
new_str = max_str.replace(min_str, '')
result2 = (len(max_str) - len(new_str)) // len(min_str)
print(result2)
5.案例-打印偶数位上的字符
s = input('请录入1个字符串: ')
for i in range(len(s)):
if i % 2 == 0:
print(s[i])
print('-' * 31)
for i in range(0, len(s), 2):
print(s[i])
print('-' * 31)
6.案例-判断文件名
file_name = "abc.xyz.txt.png"
if file_name[-4:] == '.png':
print(f'{file_name}文件的后缀名 是 以.png结尾的')
else:
print(f'{file_name}文件的后缀名 不是 以.png结尾的')
if file_name[file_name.rfind('.'):] == '.png':
print(f'{file_name}文件的后缀名 是 以.png结尾的')
else:
print(f'{file_name}文件的后缀名 不是 以.png结尾的')
print(f'{file_name}文件的后缀名 {"是" if file_name[-4:] == ".png" else "不是"} 以.png结尾的')
print(f'{file_name}文件的后缀名 {"是" if file_name[file_name.rfind("."):] == ".png" else "不是"} 以.png结尾的')
7.案例-模拟登陆
"""
需求:
模拟登陆, 只给3次机会, 并进行相应的提示, 登陆成功, 或者 登陆失败, 您还有 * 次机会.
假设:
初始账号: chuanzhi
初始密码: heima
请用所学, 模拟该知识点.
"""
username, password = 'chuanzhi', 'heima'
for i in range(0, 3):
uname = input('请录入您的账号: ')
pwd = input('请录入您的密码: ')
if uname == username and pwd == password:
print(f'欢迎您, {uname}, 登陆成功!')
break
else:
print('录入错误达上限, 账号被锁定, 请于管理员联系!' if i == 2 else f'账号或者密码错误, 您还有 {2 - i} 次机会')
8.列表-入门
"""
列表介绍:
概述:
它属于容器类型的一种, 可以用来同时存储多个元素值.
格式:
1. 变量名 = [值1, 值2, 值3...]
2. list() # 创建1个空列表.
细节:
1. 列表也是容器类型的一种, 列表中的元素也是有正向索引 和 逆向索引.
2. 列表可以同时存储多个不同类型的元素, 也可以同时存储多个同类型的元素,
实际开发中, 建议列表存储多个 同类型的 元素.
"""
list1 = [10, 20, 30, 'abc', True, 10.3]
list2 = list()
list3 = []
print(f'list1: {list1}')
print(f'list2: {list2}')
print(f'list3: {list3}')
print('-' * 31)
print(type(list1))
print(type(list2))
print(type(list3))
print('-' * 31)
print(list1[2])
print(list1[-4])
9.列表-遍历
"""
遍历解释:
概述:
遍历也叫迭代(Iterator), 即: 获取容器类中的每一个元素的过程, 就称之为: 遍历.
列表的遍历:
方式1: 直接获取每个元素.
方式2: 根据索引获取每个元素.
"""
list1 = [1, 2, 3, 'aa', True]
for value in list1:
print(value)
print('-' * 31)
i = 0
while i < len(list1):
print(list1[i])
i += 1
print('-' * 31)
for i in range(0, len(list1)):
print(list1[i])
10.列表常见操作-增
"""
列表常见操作:
概述:
列表的元素是可以进行修改的, 所以列表属于: 可变类型. 之前学习的字符串属于不可变类型.
常见操作:
增: 就是往列表中添加元素.
删:
改:
查:
列表 增 相关的函数:
列表.append(要添加的单个元素) 在列表的末尾追加1个元素.
列表.extend(容器类型) 把容器类型的每个值(即: 多个值)添加到列表的末尾.
列表.insert(索引, 要插入的单个元素) 在指定索引处, 插入指定的元素, 可以写 正向索引, 也可以写逆向索引
"""
list1 = [10, 20, 30]
name_list = ['乔峰', '虚竹', '段誉']
list1.insert(-20, 10.3)
print(list1)
11.列表常见操作-查
"""
列表 查 相关的函数:
index(元素, 起始索引, 结束索引) 查找元素在列表中第一次出现的位置, 找不到就 报错.
count() 统计元素出现的次数
in 是否在, 即: 是否包含
not in 是否不在, 即: 是否不包含.
"""
list1 = [10, 20, 30, 'aa', 30, 'bb']
print(list1.index(30))
print(list1.index(30, 3))
print("-" * 31)
print(list1.count(30))
print(list1.count(300))
print("-" * 31)
print(30 in list1)
print(30 not in list1)
12.列表常见操作-删
"""
列表 删 相关的函数:
列表.remove(元素) 根据元素内容进行删除.
列表.pop(索引) 根据索引进行删除对应的元素.
del 列表 把列表从内存中删除, 相当于注销, 也就是说, 没有创建该列表.
列表.clear() 清空列表元素.
"""
list1 = [10, 20, 30, 'aa', 30, 'bb']
list1.clear()
print(list1)
13.列表常见操作-改
"""
列表 改 相关的函数:
列表[索引] = 值 根据索引, 修改其对应的元素.
sort(reverse=False) 排序, 默认是升序(reverse=False), 可以降序(reverse=True)
reverse() 反转.
"""
list1 = [11, 33, 55, 22, 66]
list1.sort()
list1.reverse()
print(list1)
14.列表嵌套
"""
列表嵌套解释:
概述:
列表嵌套指的是: 列表的元素还是1个新的列表, 这种写法就叫列表嵌套.
格式:
变量名 = [[值1, 值2...], [值1, 值2...], [值1, 值2...]...]
"""
list1 = [[10, 20, 30], ['aa', 'bb', 'cc', 'dd'], [True, False]]
print(list1[1][1])
print(list1[2][0])
print(list1[0][2])
print('-' * 31)
for value in list1:
for j in value:
print(j, end='\t')
print()
15.列表嵌套案例-随机分配办公室
"""
需求:
已知有三个办公室, 即: [[], [], []], 列表嵌套的形式.
已知有8名教师 name_list = [.....]
请将上述的8名教师, 随机的分配到三个办公室中(注意: 因为是随机的, 所以可能出现某个办公室没有教师的情况)
"""
import random
office_list = [[], [], []]
name_list = ['乔峰A', '虚竹B', '段誉C', '阿朱D', '李清露E', '穆婉清F', '钟灵儿G', '王语嫣H']
for name in name_list:
index = random.randint(0, 2)
office_list[index].append(name)
print(office_list)