# tuple元组的定义和操作
# tuple元组定义用小括号:(1,2,3,4,5),可以是不同类型元素
# 给变量定义元组时,写括号不写tuple: a = (1,2,3,4,5)
# 变量 = () 变量 = tuple() 空元组变量
# tuple元组定义完成后,不可以修改,但是,如果元组中嵌套了一个列表时,元组中列表的内容可以修改
# 封装数据后,不希望被篡改数据,就使用元组tuple
# 1.定义一个元组
t1 = ("halibote","臭八十的",5)
t2 = tuple()
t3 = ()
print(f"t1定义元组的内容是:{t1},类型是:{type(t1)}")
print(f"t2定义元组的内容是:{t2},类型是:{type(t2)}")
print(f"t3定义元组的内容是:{t3},类型是:{type(t3)}")
# 2.定义的那个元素的元组,一定要写一个单独的 , 逗号,否则就变成字符串了
t4 = ("hello",)
print(f"t4定义元组的内容是:{t4},类型是:{type(t4)}")
# 3.元组的嵌套
t5 = ((1,2,3),("A,B,C"))
print(f"t5定义元组的内容是:{t5},类型是:{type(t5)}")
# 4.元组的下标索引取出元素 , 元组下标索引和列表一样
a = t5[1][-1]
print(f"从嵌套元组中取出的元素是:{a}")
# 5.元组的操作, 其他修改元组元素的操作不能使用
# index() 查找某个数据,根据下标索引
# count() 统计某个数据在当前元组出现的次数
# len() 统计元组内的元素个数
t6 = ("葫芦娃","大黄蜂","狗八蛋","臭八十的")
element = t6.index("葫芦娃")
print(f"在t6元组中'葫芦娃'元素的下标是:{element}")
t7 = ("葫芦娃","狗八蛋","大黄蜂","狗八蛋","臭八十的","狗八蛋","狗八蛋")
count = t7.count("狗八蛋")
print(f"在t7元组中‘狗八蛋’元素有{count}个")
t8 = ("葫芦娃","狗八蛋",8,"大黄蜂","狗八蛋",1,"臭八十的","狗八蛋","ABCD","狗八蛋")
num = len(t8)
print(f"t8元组中一共有{num}个元素")
# 6.元组的while遍历循环
index = 0
while index < len(t8):
x = t8[index]
index += 1
print(f"t8元组中的元素分别有:{x}")
# 7.元组的for遍历循环
for a in t8:
print(f"t8元组中的元素分别是哪些呢?:{a}")
# 8.元组中的元素不能修改,但是,如果元组中嵌套了一个列表时,元组中列表的内容可以修改
t9 = (1,2,3,["葫芦娃","狗八蛋"])
print(f"t9元组的内容是:{t9}")
t9[-1][1] = 123
t9[3][0] = "ABC"
print(f"t9元组修改后的内容是:{t9}")

