体测成绩计算器(国家学生体质健康标准 2014 修订)
规矩(每次都要遵守)
- 不改原表。 脚本只读老师的成绩表,结果一律另存新文件(原文件名后加「_体测成绩」,重名自动加 _1、_2),不覆盖任何已有文件。
- 先检查,再算分。 第一次拿到表,先跑
check,用大白话告诉老师:认出了哪些列、各年级男女多少人、哪些格子缺测或像是录错、哪些成绩做了换算(比如 2.15 当成 2.15 米、3.45 当成 3分45秒)。老师确认后再出结果。 - 分数只以脚本为准。 不要心算、不要自己查表改分。脚本说「暂不评定」的学生,就照实说缺了哪项。
- 保护学生隐私。 结果含学生个人成绩,每页第一行都写着「仅供教师内部使用」。提醒老师不要公开张贴、不要发家长群;不做、也不帮忙做成绩排名或排行榜,老师要排名时说明这个技能不提供,只给班级平均和比例。
- 不联网、不上传。 评分表内置在技能里,全部在本机计算。
- 组件缺了只提示,不自动装。 缺读写 Excel 的组件时,脚本会告诉老师要运行哪条安装命令,由老师自己决定。
- 说话用老师的行话。 一步一步讲,不提命令参数和程序里的名字,只说「按初二算」「1000 米那列」「数据检查页」这样的话;但运行了什么不对老师隐瞒,老师问起就照实说。
用法
脚本:python {baseDir}/scripts/pe_fitness.py <子命令> [选项],路径有空格要加引号。
| 子命令 | 做什么 | 会不会动文件 |
|---|---|---|
check 文件 |
认列、认年级性别、找缺测和录错、列出做过的换算 | 只读,不出文件 |
score 文件 |
算每项得分、等级、加分、标准分、学年总分、总评,出班级汇总 | 只读原表,另存新 Excel |
lookup --item 项目 --sex 男 --grade 初二 --value 7.8 |
查一个成绩得几分、加几分、离下一档差多少;BMI 用 --height 身高 --weight 体重 |
不动文件 |
table --item 项目 --sex 女 --grade 高一 |
列出这个年级这个性别这一项的评分表和加分表 | 不动文件 |
template --grade 五年级 --out 路径 |
生成空白体测登记表(按年级列出要测的项目) | 只新建文件,重名加 _1 |
check / score 常用选项:
| 选项 | 意思 |
|---|---|
--grade 三年级 |
表里没有年级列(也没法从班级看出)时,整张表按这个年级算 |
--sex 男 |
表里没有性别列时,整张表按这个性别算 |
--college-year 大一 |
表里只写「大学」时按几年级算(大一大二、大三大四评分表不同) |
--col 50米跑=50m成绩 |
自动认错列时手动指定,左边是项目,右边是表里的列名 |
--custom 我校标准.xlsx |
用老师的自定义评分表覆盖内置表的对应格子 |
--sheet 名称 |
指定工作表;不写用第一个有数据的 |
--out 路径 |
结果保存位置(不能和原表同名) |
项目名可以写:BMI、肺活量、50米跑、坐位体前屈、一分钟跳绳、立定跳远、一分钟仰卧起坐、引体向上、50米×8往返跑、1000米跑、800米跑(「跳绳」「1000米」「往返跑」这类简称也认)。
老师说大白话 → 怎么做
| 老师说 | 怎么做 |
|---|---|
| 「帮我把这个班的体测成绩算一下」 | 先 check 文件,把检查结果念给老师;老师说可以了再 score 文件 |
| 「表里没写年级,是三年级的」 | 加 --grade 三年级 |
| 「都是男生」「这张是女生的」 | 加 --sex 男 / --sex 女 |
| 「我们是大二的」(表里只写大学) | 加 --college-year 大二 |
| 「初二男生 50 米 7.8 秒几分」 | lookup --item 50米跑 --sex 男 --grade 初二 --value 7.8 |
| 「高一女生 800 米 3 分 40 能及格吗」 | lookup --item 800米跑 --sex 女 --grade 高一 --value 3'40" |
| 「身高 150 体重 50 的五年级男生 BMI 算什么」 | lookup --item BMI --sex 男 --grade 五年级 --height 150 --weight 50 |
| 「把三年级女生跳绳的评分标准给我看看」 | table --item 一分钟跳绳 --sex 女 --grade 三年级 |
| 「初一男生引体向上几个及格」 | table --item 引体向上 --sex 男 --grade 初一,念出 60 分那档 |
| 「给我一张五年级的体测登记表」 | template --grade 五年级 --out 老师指定的位置\五年级体测登记表.xlsx(没指定位置就问老师存哪) |
| 「50 米那列认错了,应该用『50m 成绩』」 | 加 --col 50米跑=50m成绩 |
| 「我们区用的是自己的标准」 | 请老师按「项目、性别、年级、得分、成绩」五列填一张表(如:50米跑、男、初二、100、7.4;加分表项目名后加「加分」,如:引体向上加分、男、初二、10、10),再加 --custom 那张表 |
| 「帮我排个名」「把前十名列出来」 | 说明这个技能不做排名,只给班级平均分和优秀率、优良率、及格率;个人成绩仅供老师内部使用 |
| 「这孩子为什么是暂不评定」 | 看「数据检查」页和备注:缺测、免测或成绩像录错的项目没算分,补测或改正后重新算 |
结果里有什么
- 成绩明细:按原表顺序(不排序),每个学生每项的成绩、得分、等级(BMI 写正常/低体重/超重/肥胖)、加分、标准分、学年总分、总评等级、备注(换算说明、缺测免测)。缺测、免测标黄,疑似录错标红。
- 班级汇总:按班级(没有班级就按年级)统计人数、男女、算出总分人数、平均总分、优秀/良好/及格/不及格人数,优秀率、优良率、及格率;各项平均得分;各项及格率和优良率(BMI 写正常率);各项平均成绩(男女分开)。最后一行是全部合计。只有人数、平均和比例,没有名次。
- 数据检查:表里缺的列、每个缺测格子、明显录错(如 50 米 3 秒、身高 15 厘米)、认不出的格子,带原表行号和改法。这些格子不算分,该学生总分暂不计算。
- 说明:评分依据、计算方法、取舍规则;用了自定义评分表时逐格列出。
怎么算(照《标准》原文)
- 各年级测的项目和权重:
- 小学一、二年级:BMI 15%、肺活量 15%、50 米跑 20%、坐位体前屈 30%、一分钟跳绳 20%
- 小学三、四年级:BMI 15%、肺活量 15%、50 米跑 20%、坐位体前屈 20%、一分钟跳绳 20%、一分钟仰卧起坐 10%
- 小学五、六年级:BMI 15%、肺活量 15%、50 米跑 20%、坐位体前屈 10%、一分钟跳绳 10%、一分钟仰卧起坐 20%、50 米×8 往返跑 10%
- 初中、高中、大学:BMI 15%、肺活量 15%、50 米跑 20%、坐位体前屈 10%、立定跳远 10%、引体向上(男)/一分钟仰卧起坐(女)10%、1000 米跑(男)/800 米跑(女)20%
- 单项得分:达到哪一档得哪一档的分,10 分那档都没达到记 0 分。
- 加分:小学一分钟跳绳最多 20 分;初中及以上男生引体向上、1000 米跑,女生一分钟仰卧起坐、800 米跑,各最多 10 分;超过 100 分门槛后按多出的次数或少用的秒数查加分表。
- 学年总分 = 各项得分×权重之和 + 加分(满分 120),保留一位小数;90.0 及以上优秀,80.0~89.9 良好,60.0~79.9 及格,59.9 及以下不及格。
- 取舍规则(原文没写,这里的做法):跑步类成绩多出的小数一律进位(7.81 秒按 7.9 秒,不给学生放宽);其他项目四舍五入到评分表精度;BMI 四舍五入到一位小数后查表。
- 成绩写法:时间认 3'45"、3′45″、3:45、3分45秒、225(秒)、3.45(当 3分45秒,会在检查里提示);Excel 把 3:45 存成「3 时 45 分」的也按 3分45秒算;50 米认 8.5、8"5、8秒5;立定跳远写 2.15(米)自动换成 215 厘米;身高写 1.52(米)自动换成 152 厘米;体重写「90斤」换成 45 千克。年级认一年级、3年级、七年级、初二、高1、大二、三(2)班,以及国家体测上报用的年级编号 11~16、21~23、31~33、41~44;性别认男/女、1/2。
评分表出处
内置表取自教育部《国家学生体质健康标准(2014年修订)》(教体艺〔2014〕5号)附件的表1-1~表1-16、表2-1~表2-6 和权重表,数据在 references/standard_2014.json。开发时把原文附件 PDF 逐格提取,并与另一份独立录入的网页版逐格比对(3784 格,0 处不同),大学部分另与一所高校公布的大学评分表复核。没有未核对的格子;引体向上部分分档原表本来就空,查分时跳过。详见 references/sources.md。各省市中考体育、地方方案不在内置范围,需要时用自定义评分表覆盖。
需要的组件
- 必须:Python 3.8+、openpyxl(读写 Excel)。缺了脚本会提示运行
pip install openpyxl,由老师自己决定装不装。 - 只用 Python 自带功能和 openpyxl,不调用任何外部程序。
不做什么
- 不修改、不覆盖、不删除老师的原表;不在原表里加工作表。
- 不排名次、不出排行榜、不生成可公开张贴的成绩单。
- 不联网、不上传,不调用任何在线服务;不对接任何体测上报平台。
- 不编造评分表:内置表以外的标准(各地中考、学校自定)只用老师提供的自定义表。
- 不判断学生健康状况、不给医疗或训练处方;免测由学校按规定办理。
- 不读老版本 .xls 和 WPS 的 .et 格式(请老师另存为 .xlsx);不破解有密码的文件。