一、元组
列表内的元素可以修改,如果不想修改数据的话,就要用到元组了
(一)列表和元组
区别:列表在定义好之后还可以修改但是,元组在定义好之后就不可以修改了
(二)注意
- 元组使用 ( ) 进行定义,列表则是使用 [ ] 进行定义
- 在定义单元素元组时,一定要在哪一个元素后面添加一个,不然就不是元组类型了
1、定义单元素元组
①示例:
def func01():
# 错误演示
my_tuple = ('hello')
print(f'内容为:{my_tuple},类型为:{type(my_tuple)}')
# 正确的应该为
my_tuple01 = ('hello',)
print(f'内容为:{my_tuple01},类型为:{type(my_tuple01)}')
②结果:
(三)嵌套元组的定义
def func02():
my_tuple01 = (1, True, 'MoB')
my_tuple02 = (2, 3.14, '墨白')
my_tuple03 = (my_tuple01, my_tuple02)
print(f'将元组{my_tuple01}与元组{my_tuple02}嵌套进另外一个元组中之后,内容为:{my_tuple03}')
二、元组的常用操作
编号 | 方法 | 作用 |
1 | index() | 查找某个数据,如果数据存在返回对应的下标,否则报错 |
2 | count() | 统计某个数据在当前元组内出现的次数 |
3 | len(元组) | 统计元组内的元素个数 |
(一)演示:
def func03():
# 定义空元组
my_tuple01 = ()
# 或者
my_tuple02 = tuple()
# 通过下标索引取到元组内的内容
my_tuple03 = ('I', 'am', 'MoB')
my_tuple04 = ('is', 'YYDS', 'hhh')
# 我现在想要取到第一个元组内的MoB和第二个元组内的YYDS,该怎么操作呢
name = my_tuple03[2]
attribute = my_tuple04[1]
print(f'{name}是{attribute}')
# 元组的操作——index
# 要获取到my_touple03中的MoB的下表索引
index = my_tuple03.index('MoB')
print(f'元组内指定元素的下表索引为:{index}')
# print({my_tuple03.index('zzz')}) 如果元素不存在将会报错
# 元组的操作——count
# 获取元组内指定元素的个数
my_tuple05 = ('Hello', 'World', 'and', 'Hello', 'Python.')
count = my_tuple05.count('Hello')
print(f'元组内指定元素出现的次数为:{count}')
# 元组的操作——len
# 获取元组内的元素的个数
my_len = len(my_tuple05)
print(f'元组内元素的个数为:{my_len}')
# 元组的遍历
# while循环
element_for = 0
while element_for < len(my_tuple05):
print(f'{my_tuple05[element_for]} ', end="")
element_for += 1
print()
# for循环
for element_while in range(len(my_tuple05)):
print(f'{my_tuple05[element_while]} ', end="")
print()
# 之前说:元组在定义好之后就不可以修改元素了,但是我非要修改呢,或许可以这样试试
my_tuple06 = ('I', 'am', 'rookie', ['and', 'I', 'want', 'not', 'rookie.'])
for i in range(len(my_tuple06)):
print(my_tuple06[i])
# 进行一系列操作,将 I want not rookie.替换为 I am the king of the world.
del my_tuple06[3][1]
my_tuple06[3].remove('want')
del my_tuple06[3][1]
my_tuple06[3].remove('rookie.')
for i in range(len(my_tuple06)):
print(my_tuple06[i])
my_tuple06[3].append('I am the king of the world.')
my_element = 0
while my_element < len(my_tuple06):
print(my_tuple06[my_element])
my_element += 1
"""
一顿操作猛如虎
实际上全是进行的上个博客的内容
本质上元组的元素还是不可以修改的
这只是对元组内的列表进行了修改
而元组内的元素并没有发生变化
"""
(二)练习案例
定义一个学生信息的元组,包含姓名,年龄,喜欢的书籍
在运行的时候加入一个小小的页面
要能查询学生的年龄的下标、姓名、当前爱好的增加、删除、修改、以及退出功能
1、整体框架
# 1、输入 1 查询学生年龄的下标
def searchAge():
pass
# 2、输入 2 查 询 学 生的姓名
def searchName():
pass
# 3、输入 3 删除学生的当前爱好
def delHobby():
pass
# 4、输入 4 增 加 学 生的爱好
def addHobby():
pass
# 5、输入 5 修 改 学 生的爱好
def modHonny():
pass
# 主页面
def my_exit():
print('+++++++++++++++++++++++++++++')
print('++ 1、输入 1 查询学生年龄的下标 ++')
print('++ 2、输入 2 查 询 学 生的姓名 ++')
print('++ 3、输入 3 删除学生的当前爱好 ++')
print('++ 4、输入 4 增 加 学 生的爱好 ++')
print('++ 5、输入 5 修 改 学 生的爱好 ++')
print('++ 6、输入 6 退 出 该 页 面 ++')
print('+++++++++++++++++++++++++++++')
if __name__ == '__main__':
while True:
my_exit()
operate = eval(input('请输入你要进行的操作:'))
# 查询学生年龄的下标
if operate == 1:
pass
# 查询学生的姓名
elif operate == 2:
pass
# 删除学生的当前爱好
elif operate == 3:
pass
# 增加学生的爱好
elif operate == 4:
pass
# 修改学生的爱好
elif operate == 5:
pass
# 退出
elif operate == 6:
print('******成功退出程序******')
break
else:
print('******输入不规范,退出程序******')
break
2、具体函数的实现
①查询学生的年龄下标
def searchAge():
print(f'学生年龄的下标为:{my_touple[1]}')
②查询学生的名字
def searchName():
print(f'学生的姓名为:{my_touple[0]}')
③删除学生的爱好
def delHobby():
del my_touple[2][0]
print('删除成功')
④增加学生的爱好
def addHobby():
add_hobby = input('请输入你的爱好')
my_touple[2].append(add_hobby)
print('增加成功')
⑤修改学生的爱好
def modHonny(new_hobby):
for order in my_touple[2]:
if order == new_hobby:
modify_hobby = input('要修改为什么爱好')
index = my_touple[2].index(new_hobby)
modify_hobby[2][index] = modify_hobby
print('修改成功')
⑥主页面
def my_exit():
print('\n\n+++++++++++++++++++++++++++++')
print('++ 1、输入 1 查询学生年龄的下标 ++')
print('++ 2、输入 2 查 询 学 生的姓名 ++')
print('++ 3、输入 3 删除学生的当前爱好 ++')
print('++ 4、输入 4 增 加 学 生的爱好 ++')
print('++ 5、输入 5 修 改 学 生的爱好 ++')
print('++ 6、输入 6 退 出 该 页 面 ++')
print('+++++++++++++++++++++++++++++')
⑦整体代码
print('/ 键入信息 /')
name = input(' 输入你的名字 \n\t\t:')
age = eval(input(' 输入你的年龄 \n\t\t:'))
hobby = input(' 输入你的爱好 \n\t\t:')
my_touple = (name, age, [hobby])
# 1、输入 1 查询学生年龄的下标
def searchAge():
print(f'学生年龄的下标为:{my_touple[1]}')
# 2、输入 2 查 询 学 生的姓名
def searchName():
print(f'学生的姓名为:{my_touple[0]}')
# 3、输入 3 删除学生的当前爱好
def delHobby():
del my_touple[2][0]
print('删除成功')
# 4、输入 4 增 加 学 生的爱好
def addHobby():
add_hobby = input('请输入你的爱好')
my_touple[2].append(add_hobby)
print('增加成功')
# 5、输入 5 修 改 学 生的爱好
def modHonny(new_hobby):
for order in my_touple[2]:
if order == new_hobby:
modify_hobby = input('要修改为什么爱好')
index = my_touple[2].index(new_hobby)
modify_hobby[2][index] = modify_hobby
print('修改成功')
# 主页面
def my_exit():
print('\n\n+++++++++++++++++++++++++++++')
print('++ 1、输入 1 查询学生年龄的下标 ++')
print('++ 2、输入 2 查 询 学 生的姓名 ++')
print('++ 3、输入 3 删除学生的当前爱好 ++')
print('++ 4、输入 4 增 加 学 生的爱好 ++')
print('++ 5、输入 5 修 改 学 生的爱好 ++')
print('++ 6、输入 6 退 出 该 页 面 ++')
print('+++++++++++++++++++++++++++++')
if __name__ == '__main__':
while True:
my_exit()
operate = eval(input('请输入你要进行的操作:'))
# 查询学生年龄的下标
if operate == 1:
searchAge()
# 查询学生的姓名
elif operate == 2:
searchName()
# 删除学生的当前爱好
elif operate == 3:
delHobby()
# 增加学生的爱好
elif operate == 4:
addHobby()
# 修改学生的爱好
elif operate == 5:
current_hobby = input('请输入你想要修改那个爱好:')
modHonny(current_hobby)
# 退出
elif operate == 6:
print('******成功退出程序******')
break
else:
print('******输入不规范,退出程序******')
break
此外,还可以拓展功能,比如说:
- 查询学生的整体的成绩;
- 初始的时候多加几个爱好;
- 除了当前的学生的名字、年龄、爱好之外,发挥想象力,创建几个其他的属性
- 等等等等,可玩性还是很高的。