将学生各科成绩表汇总生成学生总成绩表的Python必考题
为了考核学员对 Python Workbook 和 load_workbook 模块学习掌握情况,将学生各科成绩表汇总生成一个新的学生总成绩表几乎成了必练作业或必考题,本文介绍两种方法,供学习参考。
一、原始数据
学生各科成绩表数据结构如下,有兴趣的读者可以采取选取复制粘贴的方法自己生成一个【学生各科成绩表.xlsx】,用于学习实践:
学号 | 姓名 | 语文 | 数学 | 英语 | 物理 | 化学 | 思品 | 历史 | 地理 | 生物 |
20230101 | 朱婴 | 94 | 117 | 116 | 58 | 36.5 | 28 | 33 | 27 | 22 |
20230102 | 赵朔 | 89 | 114 | 111 | 58 | 34.5 | 34 | 28 | 26 | 28 |
20230103 | 赵胜 | 91 | 113 | 111 | 59 | 36 | 37 | 28 | 24 | 20 |
20230104 | 赵嘉 | 98 | 101 | 113 | 47 | 31.5 | 32 | 34 | 26 | 26 |
20230105 | 赵成 | 100 | 105 | 110 | 56 | 35 | 20 | 35 | 22 | 23 |
20230106 | 展喜 | 90 | 109 | 113 | 58 | 32 | 21 | 30 | 26 | 23 |
20230107 | 袁克 | 86 | 110 | 108 | 53 | 36.5 | 29 | 29 | 26 | 23 |
20230108 | 杨朱 | 89 | 110 | 109 | 57 | 28 | 31 | 27 | 26 | 21 |
20230109 | 阎嘉 | 79 | 115 | 100 | 56 | 37.5 | 31 | 26 | 24 | 24 |
20230110 | 胥婴 | 88 | 95 | 112 | 59 | 34.5 | 26 | 23 | 25 | 26 |
20230111 | 向宁 | 82 | 109 | 84 | 57 | 33 | 27 | 29 | 28 | 27 |
20230112 | 伍举 | 83 | 108 | 101 | 47 | 35.5 | 23 | 21 | 25 | 26 |
20230113 | 王子胜 | 87 | 94 | 103 | 54 | 28 | 30 | 27 | 27 | 19 |
20230114 | 田盈 | 78 | 98 | 99 | 34 | 28 | 23 | 27 | 18 | 15 |
20230115 | 孙嘉 | 85 | 89 | 78 | 42 | 30.5 | 28 | 24 | 21 | 16 |
20230116 | 沈子嘉 | 82 | 93 | 74 | 39 | 29.5 | 26 | 16 | 26 | 22 |
20230117 | 沈尹寿 | 66 | 101 | 86 | 42 | 23.5 | 22 | 24 | 15 | 18 |
20230118 | 祁胜 | 80 | 72 | 97 | 32 | 16.5 | 26 | 26 | 22 | 14 |
20230119 | 栾盈 | 75 | 73 | 78 | 37 | 27.5 | 22 | 29 | 23 | 18 |
20230120 | 栾宁 | 76 | 81 | 93 | 33 | 17 | 21 | 22 | 19 | 13 |
20230121 | 李克 | 76 | 78 | 78 | 25 | 20 | 17 | 31 | 19 | 15 |
20230122 | 乐婴齐 | 76 | 78 | 70 | 37 | 29 | 21 | 26 | 8 | 13 |
20230123 | 乐大心 | 76 | 72 | 63 | 28 | 13.5 | 23 | 29 | 21 | 17 |
20230124 | 乐成 | 76 | 73 | 60 | 19 | 26.5 | 22 | 23 | 24 | 16 |
20230125 | 孔宁 | 77.5 | 67 | 69 | 14 | 14.5 | 18 | 27 | 22 | 18 |
20230126 | 贾举 | 70 | 66 | 57 | 21 | 20.5 | 14 | 26 | 15 | 11 |
20230127 | 韩虎 | 76 | 68 | 45 | 24 | 11 | 15 | 14 | 17 | 17 |
20230128 | 巩成 | 65 | 64 | 57 | 20 | 20.5 | 10 | 20 | 14 | 9 |
20230129 | 高克 | 75 | 42 | 54 | 20 | 12.5 | 21 | 14 | 8 | 9 |
20230130 | 高虎 | 67 | 43 | 39 | 24 | 21 | 26 | 17 | 9 | 9 |
20230131 | 范鞅 | 8 | 24 | 57 | 18 | 16.5 | 7 | 15 | 13 | 6 |
20230132 | 崔成 | 44 | 10 | 23 | 13 | 7 | 11 | 11 | 5 | 3 |
二、实现目标:
调用第三方库 openpyxl 的 Workbook 和 load_workbook 模块,处理 excel 文件取出各科成绩数据,相加后将总成绩数据存入【学生总成绩表.xlsx】中,结构如下表:
姓名 | 总分 |
朱婴 | 531.5 |
赵朔 | 522.5 |
赵胜 | 519 |
赵嘉 | 508.5 |
赵成 | 506 |
展喜 | 502 |
袁克 | 500.5 |
杨朱 | 498 |
阎嘉 | 492.5 |
胥婴 | 488.5 |
向宁 | 476 |
伍举 | 469.5 |
王子胜 | 469 |
田盈 | 420 |
孙嘉 | 413.5 |
沈子嘉 | 407.5 |
沈尹寿 | 397.5 |
祁胜 | 385.5 |
栾盈 | 382.5 |
栾宁 | 375 |
李克 | 359 |
乐婴齐 | 358 |
乐大心 | 342.5 |
乐成 | 339.5 |
孔宁 | 327 |
贾举 | 300.5 |
韩虎 | 287 |
巩成 | 279.5 |
高克 | 255.5 |
高虎 | 255 |
范鞅 | 164.5 |
崔成 | 127 |
三、程序代码:
方法一:
建立一个以姓名为键名、成绩合计为变量的学生分数合计字典,遍历添加到工作表。
#导入模块
from openpyxl import Workbook, load_workbook
#导入 excel 工作簿
wb = load_workbook('./学生各科成绩表.xlsx')
# 获取活动工作表
ws = wb.active# 通过实例化 Workbook 类来获取工作簿对象,为创建【学生总成绩表】做准备
new_wb = Workbook()
# 获取活动工作表
new_ws = new_wb.active# 计算每名学生的总分
data = {} # 初始化学生分数合计字典
# 获取活动工作表 ws 中除表头外的数据
for row in ws.iter_rows(min_row=2, values_only=True):name = row[1] # 取出学生姓名total = 0 # 初始化总分计算变量classify = 0 # 初始化计算分类标识符for n in row: # 遍历行数据classify += 1if classify >2: # 从第3列开始为学生的各科成绩total += n # 累加各科成绩elif classify == 2:# 如果是第2列数据name = n # 取出学生姓名data[name] = total # 将合计成绩赋值给对应学生姓名的键名# 将表头写入工作表中
new_ws.append(['姓名','成绩'])
# 遍历学生分数合计字典,并将学生姓名和分数合计加入工作表中
for key in data:row_data =[]row_data.append(key)row_data.append(data[key])new_ws.append(row_data)# 保存文件保存为【学生总成绩表.xlsx】
new_wb.save('./学生总成绩表.xlsx')
方法二:
用 sum() 函数直接对各科成绩求和,直接添加到工作表。
#导入模块
from openpyxl import Workbook, load_workbook
#导入 excel 工作簿
wb = load_workbook('./学生各科成绩表.xlsx')
# 获取活动工作表
ws = wb.active# 通过实例化 Workbook 类来获取工作簿对象,为创建【学生总成绩表】做准备
new_wb = Workbook()
# 获取活动工作表
new_ws = new_wb.active
# 将表头写入工作表中
new_ws.append(['姓名','成绩'])# 获取活动工作表 ws 中除表头和学号的数据
for row in ws.iter_rows(min_row=2, min_col=2, values_only=True):name = row[0] # 获取学生姓名total = sum(row[1:]) # 合计各科成绩new_ws.append([name,total]) #将学生姓名和分数合计加入工作表中# 保存文件保存为【学生总成绩表.xlsx】
new_wb.save('./学生总成绩表.xlsx')
分享完毕!欢迎交流!
将学生各科成绩表汇总生成学生总成绩表的Python必考题相关推荐
- MySql 学生表 科目表 成绩表 查询学生各科成绩
MySql 学生表 科目表 成绩表 查询学生各科成绩 2016年08月16日 01:05:02 lzxomg 阅读数 8155 版权声明:本文注明出处可以转载. https://blog.csdn.n ...
- mysql查询所有学生各科成绩按照总成绩降序排列
学生表student 班级表class 课程表subject 成绩表score 查询所有学生各科成绩按照总成绩降序排列. 1.获取单门课程的学生成绩 select sc.stu_id,sc.score ...
- 已知某个班有 30 个学生,学习 5 门课程,已知所有学生的各科成绩。计算每个学生的平均成绩,并输出
已知某个班有 30 个学生,学习 5 门课程,已知所有学生的各科成绩.计算每个学生的平均成绩,并输出 注意: 定义一个二维数组 A,用于存放 30 个学生的 5 门成绩. 定义一个一维数组 B,用 于 ...
- mysql按组区分后获取每组前几名的sql写法(以及学生各科成绩大于多少分的总结)
遇到一个场景,要把数据分组,然后获取每组前10条数据,首先我想到用group by分组,但是难点是分组后怎么知道该数据在组里面排第几条.研究了一下,写个demo,记录一下笔记,文章后面顺便也记录一下常 ...
- C语言 计算学生各科成绩平均分的总和
n个学生的信息(包括学生的姓名.语数英三门的成绩.住址)存储在一个结构体数组stuinfo中,现需设计一个函数,统计学生各科成绩平均分的总和,并通过函数返回. #include <stdio.h ...
- java计算并显示学生的成绩_Java开学测试-学生成绩管理系统
题目: 1.定义 ScoreInformation 类,其中包括七个私有变量(stunumber, name, mathematicsscore, englishiscore,networkscore ...
- 【C#Windows 窗体应用】实现简单学生查询成绩,管理员管理学生成绩
[C#Windows 窗体应用]实现简单学生查询成绩,管理员管理学生成绩功能 已经上传到 https://gitee.com/biflcy/student-management-system 给颗小心 ...
- oracle横向合并两张表,SQL中将两个表合并成一个新表 SQL如何合并两个表并生成一个新表?...
sql把两个表合并成一个新表的语句应该怎么写SQL SERVER: select * into 表3 from ( select 字段列表1 from 表1 union all select 字段列表 ...
- c#语言编程:定义person类,再派生学生类如何存放学生的成绩,C#定义全班学生成绩类,包括姓名,学号,C++成绩,英语成绩,数学成绩,平均成绩...
满意答案 兄弟咱写了1个小时,格式规范,且经过严密测试,完成你所需要功能,且还有人性化设计,并且为你提供了可视化测试,我为你考虑的周到吧,不懂就问我 努力吧~~~ usingSystem; using ...
最新文章
- B00009 C语言分割字符串库函数strtok
- IoC~MVC3+EF+Autofac实现松耦合的系统架构 [转载]
- POJ 1321 棋盘问题 搜索
- 函数初识(文字总结)
- php验证中文姓名,我想在表单验证中加入中文姓名合法性模糊匹配判断?
- 设计模式之职责链模式
- ORACLE常用数值函数、转换函数、字符串函数介绍
- yum install php72w,yum 安装 php72w-pecl-imagick 报错
- 四种软件开发模式(瀑布、迭代、螺旋、敏捷),对比分析
- VS2013/SQL SERVER 产品密钥
- 网络协议安全性分析(思维导图word版本)
- 阿里开源互动游戏引擎Eva.js
- VR全景图之图片拼接教程
- 物联网应用技术和计算机应用技术哪个更好,2020物联网应用技术专业选什么大学好?...
- Android状态栏禁止下拉异常分析
- Codeforces Round #512 (Div. 2, based on Technocup 2019 Elimination Round 1) E. Vasya and Good Sequen
- 【基因调控网络】Gene regulatory networks modelling using a dynamic evolutionary hybrid(ENFRN ,动态进化混合模型2010)
- 盈利“晴空”下,唯品会拨不开的“乌云”
- 当原图片加载失败时,如何让图片加载上我们默认给的图片
- python反爬虫应对之借助平台超级鹰突破网页验证码识别