一.元组补充知识点
继原知识点补充总结:2023.9.29-python学习day07,数据容器之元组,字符串
- 如果元组中只有一个元素,必须加逗号,为了和其他类型的数据作区分,否则就会类型错误
- tuple_1 = (10)这个是int类型. tuple_1 = (10,) 这个是元组类型
- 元组的元素不可修改,但元组内嵌套的列表里的单独元素可以修改,并且修改后的类型也原先的类型也要一致
tuple1 = (1, '白', True, [0, 3, 6])
tuple1[3][0] = 1 # 可以改元组里面的列表,但改后的类型也要一样的东西
tuple1[3][1] = '白' # 类型也不能变
# tuple1[0] = 1
# tuple1[1] = 1报错,元组不可修改
# tuple1[2] = 1
print(tuple1)
print(id(tuple1)) # 2290386637904数据的内存地址
'''id()可以查看数据的内存地址'''
二.元组练习题
定义元素
# 需求: 定义 空元组格式两种方式
# 需求: 定义非空元组存储'张三', '李四', '王五'
# 注意: 如果元组只存储一个元素'赵六'
# 需求: 定义 空元组格式两种方式
tuple_1 = ()
tuple_2 = tuple()
# 需求: 定义非空元组存储'张三', '李四', '王五'
tuple_3 = ('张三', '李四', '王五')
print(tuple_3)
# 注意: 如果元组只存储一个元素'赵六'
tuple_4 = ('赵六',)
print(tuple_4, type(tuple_4))
查询元素
# 需求: 定义一个元组,存储'张三','李四','王五','张三'
# 需求: 查询第一个位置的元素
# 需求: 查询张三元素在元组中出现次数
# 需求: 查询李四元素在元组中的下标索引
# 需求: 查询names元组当前元素的个数
# 需求: 定义一个元组,存储'张三','李四','王五','张三'
tuple_5 = ('张三', '李四', '王五', '张三')
# 需求: 查询第一个位置的元素
print(tuple_5[0])
# 需求: 查询张三元素在元组中出现次数
print(tuple_5.count('张三'))
# 需求: 查询李四元素在元组中的下标索引
print(tuple_5.index('李四'))
# 需求: 查询names元组当前元素的个数
print(len(tuple_5))
元组的循环
# 需求: 定义元组,存储张三,李四,王五,赵六
# 需求: 依次把names元组中每个名字取出打印到控制台
# 遍历方式1: 原始方式 元组名[索引]
# 遍历方式2: while循环方式
# 遍历方式3: for循环方式
# 需求: 定义元组,存储张三,李四,王五,赵六
tuple_6 = ('张三', '李四', '王五', '赵六')
# 需求: 依次把names元组中每个名字取出打印到控制台
# 遍历方式1: 原始方式 元组名[索引]
print(tuple_6[0])
print(tuple_6[1])
print(tuple_6[2])
print(tuple_6[3])
print('----------------------------------------------')
# 遍历方式2: while循环方式
index = 0
while index < len(tuple_6):
name = tuple_6[index]
index += 1
print(name)
print('----------------------------------------------')
# 遍历方式3: for循环方式
for i in tuple_6:
print(i)
三.列表练习题
增加元素
# 需求: 做核酸早上刚开始没有人排队(定义空列表)
# 需求: 张三排队到末尾
# 需求: 李四和王五夫妻俩一起排队到末尾
# 需求: 赵六走关系需要插队到第一个位置
# 需求: 做核酸早上刚开始没有人排队(定义空列表)
list_5 = []
# 需求: 张三排队到末尾
list_5.append('张三')
print(list_5)
# 需求: 李四和王五夫妻俩一起排队到末尾
list_5.append('李四''王五')
print(list_5)
# 需求: 赵六走关系需要插队到第一个位置
list_5.insert(0, '赵六')
print(list_5)
查询元素
# 需求: 定义列表,已知数据['张三','李四','王五','张三']
# 需求: 查询张三在列表中出现次数
# 需求: 查询李四在列表中的下标索引
# 需求: 查询names列表中有多少个元素
# 需求: 定义列表,已知数据['张三','李四','王五','张三']
list_7 = ['张三', '李四', '王五', '张三']
# 需求: 查询张三在列表中出现次数
print(list_7.count('张三'))
# 需求: 查询李四在列表中的下标索引
print(list_7.index('李四'))
# 需求: 查询names列表中有多少个元素
print(len(list_7))
清除元素
# 需求: 已知做核酸队列['赵六', '张三', '李四', '王五']
# 需求: 删除第一个位置的元素
# 需求: 移除做完核酸的张三
# 需求: 清空列表中所有元素
# 需求: 已知做核酸队列['赵六', '张三', '李四', '王五']
list_6 = ['赵六', '张三', '李四', '王五']
# 需求: 删除第一个位置的元素
list_6.pop(0)
print(list_6)
# 需求: 移除做完核酸的张三
list_6.remove('张三')
print(list_6)
# 需求: 清空列表中所有元素
list_6.clear()
print(list_6)
修改元素
# 需求: 定义已知数字序列[30,20,10,40]
# 需求: 把第一个位置的元素值修改成33
# 需求: 定义已知数字序列[30,20,10,40]
num = [30, 20, 10, 40]
# 需求: 把第一个位置的元素值修改成33
num[0] = 33
print(num)
四.字符串补充知识
继2023.9.29-python学习day07,数据容器之元组,字符串补充操作
在功能上, find函数index函数完全一致,不同的是index函数在没有查找到关键字的情况下会报ValueError的异常,因此在一般开发环境下通常都会使用find函数
find,Rfind与index,Rindex区别
s1 = 'XXXXXX是XXXX集团旗下的头号XXXXX品牌'
# index 和rindex的区别,假如一个元素在头和尾都有相同的,从左或者从右开始查找,找到的元素会不一样
print(s1.rindex('牌')) # 从右往左数决定是哪一个'牌'字,然后再按照正索引来找到位置24
print(s1.index('牌')) # 从左往右数决定是哪一个'牌'字,然后再按照正索引来找到位置24
print(s1.find('牌')) # 正索引24 ,如果用index,找不到时会报错,影响代码继续运行
print(s1.find('白')) # 正索引 ,找不到这个字符也不报错,显示-1,继续运行代码
# ,find找不到字符代码也会继续运行
print(s1.rfind('牌')) # 从右往左数决定是哪一个'牌'字,然后再按照正索引来找到位置24
find练习
s2 = '1,2,3,4,0,4,3,2,1'
print(s2.index('1')) # 从左往右数0
print(s2.rindex('1')) # 从右往左数16
print(s2.find('1')) # 从左往右数,正索引0
print(s2.find('白')) # 找不到就显示-1
print(s2.rfind('1')) # 从右往左数,正索引16
replace练习,用于屏蔽敏感词语
s1 = '你tmd,真sb'
s2 = s1.replace('tmd', '***').replace('sb', '**')
print(s2) # 你***,真**
split分割
s5 = ('苹果-雪梨-橘子-香蕉')
list = s5.split('-')
print(list) # ['苹果', '雪梨', '橘子', '香蕉']
list = s5.split('-', 2) # 切两次
print(list) # ['苹果', '雪梨', '橘子-香蕉']
list = s5.split('-', 5) # 超过可以切的最大数,默认切割所有满足条件的
print(list)
print(type(list)) # <class 'list'>
strip去除
可以默认去除字符串前后的空白,也可以指定字符来去除
user_name = ' 白白 '
name = '白白'
print(name.strip()) # 默认去除大字符串两端的空白
print(user_name == name) # False
print(name == user_name.strip()) # True 去除前后空白后,就和真实的名字相等了
user_name = 'xx白白xx'
name = '白白'
print(user_name == name) # false
print(name == user_name.strip('xx')) # True 去除前后xx后,就和真实的名字相等了
startswith,endswith判断开头或结尾的字符是否为指定的字符
a = '白白的wj'.startswith('白')
print(a) # True
a = '白白的wj'.startswith('黑') # 判断大字符串是否以指定的子串开头
print(a) # false
a = '白白的wj'.endswith('j') # 判断大字符串是否以指定的子串结束
print(a) # True
a = '白白的wj'.endswith('白')
print(a) # False
加上判断开头语句和循环,进行打印操作
name_list = ['白白', '白黄', '白黑','黑黑']
for name in name_list:
if name.startswith('白'): # 如果字符的开头是以'白'开头,则打印
print(name)
'''
白白
白黄
白黑
'''
加上判断结尾语句和循环,进行打印操作
name_list = ['白白', '白黄', '白黑']
for name in name_list:
if name.endswith('白'):
print(name)
# 白白
字符串内的字母变成大写UPPER或小写LOWER,与大小写判断
'''把字符串内的字母变成大写UPPER或小写LOWER'''
ss = 'abc123CDE'
print(ss.upper()) # ABC123CDE
print(ss.lower()) # abc123cde
print('ABC'.isupper()) # 判断是否是大写
print('ABC'.islower()) # 判断是否是小写
join
re = '1'.join(['a', 'b', 'c', 'd']) # a1b1c1d,连接可迭代对象每个字符
print(type(re))
print(re)
'''
<class 'str'>
a1b1c1d
'''
五.字符串练习题
# 需求: 定义字符串'苹果,香蕉,橘子,橙子,榴莲'
# 需求: 要求把所有水果分开单独放到一个容器中要求结果:['苹果', '香蕉', '橘子', '橙子', '榴莲']
# 需求: 查看切割后容器类型
# 需求: 使用切割后生成的列表
# 需求: 定义字符串'苹果,香蕉,橘子,橙子,榴莲'
fruits = ('苹果, 香蕉, 橘子, 橙子, 榴莲')
# 需求: 要求把所有水果分开单独放到一个容器中要求结果:['苹果', '香蕉', '橘子', '橙子', '榴莲']
print(fruits.split(','))
# 需求: 查看切割后容器类型
print(type(fruits.split(',')))
# 需求: 使用切割后生成的列表
list_1 = fruits.split(',')
print(list_1)
做一个简单的用户信息管理系统: 提示用户依次输入姓名,年龄和爱好 并且在输入完成之后,一次性将用户输入的数据展示出来
'''做一个简单的用户信息管理系统:
提示用户依次输入姓名,年龄和爱好
并且在输入完成之后,一次性将用户输入的数据展示出来'''
name = input('请输入姓名:')
age = str(input('请输入年龄:'))
hobby = input('请输入爱好:')
print('您的姓名是%s,您的年龄是%s,您的爱好是%s' % (name, age, hobby))