2023.10.5-python学习day12,数据容器-元组与字符串扩展与练习题目

一.元组补充知识点

继原知识点补充总结: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))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白白的wj

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值