EXCEL如何根据年龄,考核成绩,成绩标准,自动算成绩?

1个回答
展开全部
摘要 # 总体思路
通过读取Excel表上该行人员的性别、年龄、海拔数据(计算3000米跑才需要,其它项目不需要),和原始成绩,去查询该项“成绩计算标准表”,得到对应的分数,将分数写入该项目“换算成绩”一列中。循环计算完所有的列。
# 制作成绩计算标准表
通过分析各项“成绩计算标准表”,发现标准表只是参照标准表,不是连续的全覆盖,以男子引体向上成绩计算标准为例,标准中24岁以下,只规定了单杆30个100分,27个95分,那么28/29个的情况多少分呢?
只能是我们根据公平原则去补充,在30/27之间去取平均分,这可以通过代码自动换算(3000米跑),也可以手工计算(引体向上、仰卧起坐等),补充到成绩计算标准表里,精确到小数点后一位。
# 读取成绩计算标准表
通过Python的openpyxl模块读取补充成绩计算标准表中的数据,制成 {原始单杠个数:分数} 格式的字典,以供查询。
# 年龄计算
我认为编程有一个基本原则,就是做一步,验证一步,否则代码积累很多之后再验证正确性,BUG就可能非常复杂,难以排除。
所以要能够及时验证计算的正确性,就将计算的几个要素一开始就纳入进来,性别、海拔、原始成绩都可以直接读取,但是年龄是动态的,不同时间组织的考核,人员的年龄会可能不同,最佳方式就是通过出生日期,即时计算出人员在考核时的年龄,能够精确到天。
函数calculate_age(born),参数born是出生日期,函数返回的就是年龄值。
import openpyxl # 导入openpyxl模块
import datetime as dt
# 打开Excel文件'通用训练课目考核成绩计算.xlsx'
wb = openpyxl.load_workbook('通用训练课目考核成绩计算.xlsx')
# 打开Excel文件中的工作簿“体能考核成绩”
ws_training_performance = wb['体能考核成绩']
def calculate_age(born):
'''由出生日期计算年龄,精确到天'''
today = dt.datetime.today() #程序运行时的时间,即现在的时间
# today = today.replace(year=2020) #用于测试不同年份时的情况
# print(born)
咨询记录 · 回答于2024-01-12
EXCEL如何根据年龄,考核成绩,成绩标准,自动算成绩?
您好,您的问题我已经看到了,正在整理答案,请稍等一会儿哦~
# 总体思路 通过读取Excel表上该行人员的性别、年龄、海拔数据(计算3000米跑才需要,其它项目不需要),和原始成绩,去查询该项“成绩计算标准表”,得到对应的分数,将分数写入该项目“换算成绩”一列中。循环计算完所有的列。 # 制作成绩计算标准表 通过分析各项“成绩计算标准表”,发现标准表只是参照标准表,不是连续的全覆盖,以男子引体向上成绩计算标准为例,标准中24岁以下,只规定了单杆30个100分,27个95分,那么28/29个的情况多少分呢? 只能是我们根据公平原则去补充,在30/27之间去取平均分,这可以通过代码自动换算(3000米跑),也可以手工计算(引体向上、仰卧起坐等),补充到成绩计算标准表里,精确到小数点后一位。 # 读取成绩计算标准表 通过Python的openpyxl模块读取补充成绩计算标准表中的数据,制成 {原始单杠个数:分数} 格式的字典,以供查询。 ## 年龄计算 我认为编程有一个基本原则,就是做一步,验证一步,否则代码积累很多之后再验证正确性,BUG就可能非常复杂,难以排除。 所以要能够及时验证计算的正确性,就将计算的几个要素一开始就纳入进来,性别、海拔、原始成绩都可以直接读取,但是年龄是动态的,不同时间组织的考核,人员的年龄会可能不同,最佳方式就是通过出生日期,即时计算出人员在考核时的年龄,能够精确到天。 函数calculate_age(born),参数born是出生日期,函数返回的就是年龄值。 import openpyxl # 导入openpyxl模块 import datetime as dt # 打开Excel文件'通用训练课目考核成绩计算.xlsx' wb = openpyxl.load_workbook('通用训练课目考核成绩计算.xlsx') # 打开Excel文件中的工作簿“体能考核成绩” ws_training_performance = wb['体能考核成绩']
下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消