python中判定性别编程_Python+Excel数据分析实战:军事体能考核成绩评定(五)男女仰卧起坐计算...

这一章我们实现男子和女子仰卧起坐成绩的计算,单位是数值,多少个,全年龄段考核内容都是仰卧起坐,相对简单一点吧。

一、基本情况

通过分析男女仰卧起坐“成绩计算标准表”,发现标准表也只是参照标准表,不是连续的全覆盖。比如标准中24岁以下,只规定了男子仰卧起坐87个的成绩为100分,82个的成绩为95分,那么中间的情况多少分呢?

ceba162410a1

男子仰卧起坐成绩计算标准表

ceba162410a1

女子仰卧起坐成绩计算标准表

还是只能是我们根据公平原则去补充,在87个、82个的成绩之间去取平均分,数据量比较小,NO!数据量不算小,也不大,看下图就知道!

ceba162410a1

男子仰卧起坐补充标准表

ceba162410a1

女子仰卧起坐补充标准表

这时我也想到3公里测试的原始成绩跨度更大,使用这种手工添加补充的办法已经落后了,不过新算法再酝酿当中,也不复杂。本次我也选择手工计算,补充到成绩计算标准表里,精确到小数点后一位。

同样,通过Python的openpyxl模块读取补充成绩计算标准表中的数据,制成 {原始仰卧起坐成绩:分数} 格式的字典,以供主程序查询出换算成绩,再写入成绩表的对应位置中。

二、代码实现

ceba162410a1

男女仰卧起坐原始成绩统计表

1.我把计算男子和女子仰卧起坐的文件分开,分别放入单独的模块中,男子的文件命名为situp_male.py。因为男女仰卧起坐读取不同的工作簿中的标准表,分开做也方便。计算函数的原理与前面的文章相同,增加了一项判定,若原始数据类型不是整型,则不执行计算,打印错误。

# 男性仰卧起坐的成绩计算

# 从工作表“男子仰卧起坐标准”中读取数据

import openpyxl

class Situp_male_standard_data():

wb=openpyxl.load_workbook('通用训练课目考核成绩计算.xlsx')

ws_situp_male = wb['男子仰卧起坐标准']

age24={} # 24岁以下,{原始仰卧起坐个数:分数}

age25_27={} # 25~27岁,{原始仰卧起坐个数:分数}

age28_30={}

age31_33={}

age34_36={}

age37_39={}

age40_42 = {} # 40岁以上,{原始仰卧起坐个数:分数}

age43_45 = {} # 43~45岁,{原始仰卧起坐个数:分数}

age46_48 = {}

age49_51 = {}

age52_54 = {}

age55_57 = {}

age58_59 = {}

rngs = ws_situp_male.iter_rows(min_row=3,max_row=49,min_col=1,max_col=24)

# 生成{原始仰卧起坐个数:分数}的字典

for row in rngs:

#print([c.value for c in row])

age24[row[1].value]=row[0].value

age25_27[row[3].value]=row[2].value

age28_30[row[4].value]=row[2].value

age31_33[row[5].value]=row[2].value

age34_36[row[7].value]=row[6].value

age37_39[row[9].value] = row[8].value

age40_42[row[11].value] = row[10].value

age43_45[row[13].value] = row[12].value

age46_48[row[15].value] = row[14].value

age49_51[row[17].value] = row[16].value

age52_54[row[19].value] = row[18].value

age55_57[row[21].value] = row[20].value

age58_59[row[23].value] = row[22].value

# print('-----age24-----') # 打印数据以便检查

# for m in age24.items():

# print(m)

# print('-----age25_27-----')

# for m in age25_27.items():

# print(m)

# print('-----age28_30-----')

# for m in age28_30.items():

# print(m)

# print('-----age31_33-----')

# for m in age31_33.items():

# print(m)

# print('-----age34_36-----')

# for m in age34_36.items():

# print(m)

# print('-----age37_39-----')

# for m in age37_39.items():

# print(m)

# print('-----age40_42-----') # 打印数据以便检查

# for m in age40_42.items():

# print(m)

#

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值