#元组是不可变的列表,类似于列表,但创建后不能修改
#特点:1,可以存储任意类型的数据
#2,元素可以重复、有序、不可修改
#方法:1,count()方法返回元组中指定元素的出现次数
#2,index()方法返回元组中第一个匹配项的索引
t1 = (10 , 20 , 30 , 40 , 50)
print(t1)
print(type(t1))
#索引访问
print(t1[0])
print(t1[-1])

#切片访问
print(t1[1:4])

#count()方法
print(t1.count(20))

#index()方法
print(t1.index(30))

#一个元素的元组需要在元素后面加逗号
t2 = (10,)

#根据如下提供的学生成绩单,完成如下需求:
#1,计算每个学生的总分、各科平均分,然后一并输出出来。
#2,统计各科成绩的最低分、最高分、平均分,并输出。
#3,查找成绩优秀(平均分大于90)的学生,并输出。

students = (
    ("S001","王林",85, 92, 78),
    ("S002","李慕婉",92, 88, 95),
    ("S003","张伟",75, 80, 70),
    ("S004","赵敏",90, 95, 88),
    ("S005","陈晨",88, 82, 91),
    ("S006","刘洋",95, 90, 92),
    ("S007","孙磊",80, 85, 78),
    ("S008","周婷",92, 88, 95),
    ("S009","吴昊",75, 80, 70),
    ("S010","郑爽",90, 95, 88)
)

#1,计算每个学生的总分、各科平均分,然后一并输出出来。average:.1f:保留一位小数
for s in students:
    total = s[2] + s[3] + s[4]
    average = total / 3
    print(f"学号: {s[0]}, 姓名: {s[1]}, 总分: {total}, 平均分: {average:.1f}")

#2,统计各科成绩的最低分、最高分、平均分,并输出。
#2.1 获取到各科的成绩列表
chinese_scores = [s[2] for s in students]
math_scores = [s[3] for s in students]
english_scores = [s[4] for s in students]

#2.2 统计各科成绩的最低分、最高分、平均分
print("语文成绩统计:")
print(f"最低分: {min(chinese_scores)}")
print(f"最高分: {max(chinese_scores)}")
print(f"平均分: {sum(chinese_scores)/len(chinese_scores):.1f}")

print("数学成绩统计:")
print(f"最低分: {min(math_scores)}")
print(f"最高分: {max(math_scores)}")
print(f"平均分: {sum(math_scores)/len(math_scores):.1f}")

print("英语成绩统计:")
print(f"最低分: {min(english_scores)}")
print(f"最高分: {max(english_scores)}")
print(f"平均分: {sum(english_scores)/len(english_scores):.1f}")

#3,查找成绩优秀(平均分大于90)的学生,并输出。
print("成绩优秀的学生:")
for s in students:
    average =(s[2]+s[3]+s[4])/3
    if average >90:
        print(f"学号: {s[0]}, 姓名: {s[1]}, 平均分: {average:.1f}")