Python014-第二章13.数据容器-tuple案例

基于已学习的数据容器完成如下需求

python 复制代码
# 案例
'''
根据提供的学生成绩单,完成如下需求:
1. 计算每个学生的总分、各科平均分,然后一并输出出来。
2. 统计各科成绩的最低分、最高分、平均分,并输出。
3. 查找成绩优秀(平均分大于90)的学生,并输出。
'''
# 先存入学生信息:如果是可变的,用列表来存;如果是不可变的,用元组来存。这里是不可变的,用元组来存。
students = (
    ("S001", "王林", 85, 92, 78),
    ("S002", "李慕婉", 92, 88, 95),
    ("S003", "十三", 78, 85, 82),
    ("S004", "曾牛", 88, 79, 91),
    ("S005", "周轶", 95, 96, 89),
    ("S006", "王卓", 76, 82, 77),
    ("S007", "红蝶", 89, 91, 94),
    ("S008", "徐立国", 75, 69, 82),
    ("S009", "许木", 86, 89, 98),
    ("S010", "通天", 66, 59, 72)
)
# 小技巧:shift+Tab键可以将代码往顶格前移

# 1. 计算每个学生的总分、各科平均分,然后一并输出出来。
# 从容器中循环拿出元素,用for
print("学号\t\t\t姓名\t\t\t语文\t\t数学\t\t英语\t\t总分\t\t平均分")
for s in students:
    total = s[2] + s[3] + s[4]
    avg = total / 3
    print(f"{s[0]}\t\t\t{s[1]}\t\t\t{s[2]}\t\t\t{s[3]}\t\t\t{s[4]}\t\t\t{total}\t\t\t{avg:.1f}")
# Ctrl + Alt + Shift + J: 一次性选择文件中所有相同内容

print()

# 2. 统计各科成绩的最低分、最高分、平均分,并输出。
# 2.1 获取到各科的成绩列表
chinese_scores = [s[2] for s in students]   # 列表推导式就是按照一定规则快速生成一个列表的方法。格式1:列表名称=[要插入列表的数据 for i in 列表];格式2:列表名称=[要插入列表的数据 for i in 列表 if 条件]
# print(chinese_scores)
math_scores = [s[3] for s in students]
english_scores = [s[4] for s in students]

# 2.2 统计各科成绩的最低分、最高分、平均分,并输出。
print(f"语文最低分:{min(chinese_scores)},最高分:{max(chinese_scores)},平均分:{sum(chinese_scores)/len(chinese_scores)}")
print(f"数学最低分:{min(math_scores)},最高分:{max(math_scores)},平均分:{sum(math_scores)/len(math_scores)}")
print(f"英语最低分:{min(english_scores)},最高分:{max(english_scores)},平均分:{sum(english_scores)/len(english_scores)}")

print()

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

students = (
    ("S001", "王林", 85, 92, 78),
    ("S002", "李慕婉", 92, 88, 95),
    ("S003", "十三", 78, 85, 82),
    ("S004", "曾牛", 88, 79, 91),
    ("S005", "周轶", 95, 96, 89),
    ("S006", "王卓", 76, 82, 77),
    ("S007", "红蝶", 89, 91, 94),
    ("S008", "徐立国", 75, 69, 82),
    ("S009", "许木", 86, 89, 98),
    ("S010", "通天", 66, 59, 72)
)

# 1. 计算每个学生的总分、各科平均分,然后一并输出出来。
# 从容器中循环拿出元素,用for
print("学号\t\t\t姓名\t\t\t语文\t\t数学\t\t英语\t\t总分\t\t平均分")
for id, name, chinese, math, english in students:
    total = chinese + math + english
    avg = total / 3
    print(f"{id}\t\t\t{name}\t\t\t{chinese}\t\t\t{math}\t\t\t{english}\t\t\t{total}\t\t\t{avg:.1f}")

print()

# 3. 查找成绩优秀(平均分大于90)的学生,并输出。
print("优秀学生(平均分>90)名单如下:")
for id, name, chinese, math, english in students:
    total = chinese + math + english
    avg = total / 3
    if avg > 90:
        print(f"学号:{id},姓名:{name},平均分:{avg:.1f}")
相关推荐
whcyhhh15 分钟前
头歌实践教学平台:数据科学与大数据技术导论(十六)
大数据·开发语言·python
宸津-代码粉碎机18 分钟前
AI工程化高阶实战|从Demo到生产落地核心架构、全套源码与避坑指南
java·大数据·开发语言·人工智能·python·架构
郝学胜-神的一滴1 小时前
Effective Python 条款4:字符串格式化大乱斗
开发语言·网络·python·程序人生·软件工程
ynchyong2 小时前
Python 字符组合生成器:product 与 permutations 的实战对比
python·工具·字符串生产
benchmark_cc2 小时前
1000只ETF的5分钟K线如何批量获取?QuantDash分页策略与高性能Python实践
开发语言·人工智能·爬虫·python·算法·quantdash·量化数据源
sel_92 小时前
【PEFT】参数高效微调(PEFT)技术详解:从原理到 LoRA/QLoRA 实战
人工智能·python·深度学习·算法·机器学习·参数高效微调
月光船幽幽2 小时前
带刺反馈引擎:唤醒深层意图
人工智能·python
大模型码小白3 小时前
AI 提示词专栏:使用系统指令(System Prompt)实现全局约束
java·大数据·运维·开发语言·人工智能·python·prompt
烂蜻蜓3 小时前
Flask入门教程(八):视图函数详解——请求处理与响应的核心
后端·python·flask
河南凹凸环境艺术设计3 小时前
民宿酒店设计实力公司
大数据·人工智能·python