# 女性单杠曲臂悬垂的成绩计算,40岁及以上计算俯卧撑个数
# 从工作表“女子单杆曲臂悬垂标准”中读取数据
import openpyxl
import datetime as dt
class Flex_arm_hang_standard_data():
wb=openpyxl.load_workbook('通用训练课目考核成绩计算.xlsx')
ws_training_score = wb['体能考核成绩']
ws_personnel_parameters = wb['人员参数设置']
ws_flex_arm_hang = wb['女子单杆曲臂悬垂标准']
age24 = {} # 24岁以下,{原始悬垂时间:分数}
age25_27 = {} # 25~27岁,{原始悬垂时间:分数}
age28_30 = {}
age31_33 = {}
age34_36 = {}
age37_39 = {}
rngs1 = ws_flex_arm_hang.iter_rows(min_row=3,max_row=43,min_col=1,max_col=8)
# 生成{原始悬垂时间:分数}的字典
for row in rngs1:
#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[6].value] = row[2].value
age37_39[row[7].value] = row[2].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)
age40_42 = {} # 40岁以上,{原始俯卧撑个数:分数}
age43_45 = {} # 43~45岁,{原始俯卧撑个数:分数}
age46_48 = {}
age49_51 = {}
age52_54 = {}
age55_57 = {}
age58_59 = {}
rngs2 = ws_flex_arm_hang.iter_rows(min_row=49,max_row=69,min_col=1,max_col=14)
# 生成{原始俯卧撑个数:分数}的字典
for row in rngs2:
#print([c.value for c in row])
age40_42[row[1].value]=row[0].value
age43_45[row[3].value]=row[2].value
age46_48[row[5].value]=row[4].value
age49_51[row[7].value]=row[6].value
age52_54[row[9].value]=row[8].value
age55_57[row[11].value] = row[10].value
age58_59[row[13].value] = row[12].value
# print('-----age40_42-----') # 打印数据以便检查
# for m in age40_42.items():
# print(m)
# print('-----age43_45-----')
# for m in age43_45.items():
# print(m)
# print('-----age46_48-----')
# for m in age46_48.items():
# print(m)
# print('-----age49_51-----')
# for m in age49_51.items():
# print(m)
# print('-----age52_54-----')
# for m in age52_54.items():
# print(m)
# print('-----age55_57-----')
# for m in age55_57.items():
# print(m)
# print('-----age58_59-----')
# for m in age58_59.items():
# print(m)
def flex_arm_hang_score_computing(self,age,original_amount):
'''根据年龄,实际单杠曲臂悬垂时间,计算所得分数'''
if age <= 24:
if type(original_amount) is dt.time: # 核查是否是日期格式
if original_amount < dt.time(0,0,30):
return 0
elif original_amount > dt.time(0,1,10):
return 100+((original_amount.hour-0)*3600+(original_amount.minute-1)*60+original_amount.second-10)/5
elif dt.time(0,0,30) <= original_amount <= dt.time(0,1,10) :
return self.age24[original_amount]
else:
print('ERROR:女子40岁以前测试曲臂悬垂,原始成绩的数据类型须为时间(datetime.time)类型')
elif 25 <= age <= 27:
if type(original_amount) is dt.time: # 核查是否是日期格式
if original_amount < dt.time(0,0,29):
return 0
elif original_amount > dt.time(0,1,5):
return 100+((original_amount.hour-0)*3600+(original_amount.minute-1)*60+original_amount.second-5)/5
elif dt.time(0,0,29) <= original_amount <= dt.time(0,1,5) :
return self.age25_27[original_amount]
else:
print('ERROR:女子40岁以前测试曲臂悬垂,原始成绩的数据类型须为时间(datetime.time)类型')
elif 28 <= age <= 30:
if type(original_amount) is dt.time: # 核查是否是日期格式
if original_amount < dt.time(0,0,27):
return 0
elif original_amount > dt.time(0,1,3):
return 100+((original_amount.hour-0)*3600+(original_amount.minute-1)*60+original_amount.second-3)/5
elif dt.time(0,0,27) <= original_amount <= dt.time(0,1,3) :
return self.age28_30[original_amount]
else:
print('ERROR:女子40岁以前测试曲臂悬垂,原始成绩的数据类型须为时间(datetime.time)类型')
elif 31 <= age <= 33:
if type(original_amount) is dt.time: # 核查是否是日期格式
if original_amount < dt.time(0,0,24):
return 0
elif original_amount > dt.time(0,1,0):
return 100+((original_amount.hour-0)*3600+(original_amount.minute-1)*60+original_amount.second-0)/5
elif dt.time(0,0,24) <= original_amount <= dt.time(0,1,00) :
return self.age31_33[original_amount]
else:
print('ERROR:女子40岁以前测试曲臂悬垂,原始成绩的数据类型须为时间(datetime.time)类型')
elif 34 <= age <= 36:
if type(original_amount) is dt.time: # 核查是否是日期格式
if original_amount < dt.time(0,0,21):
return 0
elif original_amount > dt.time(0,0,57):
return 100+((original_amount.hour-0)*3600+(original_amount.minute-0)*60+original_amount.second-57)/5
elif dt.time(0,0,21) <= original_amount <= dt.time(0,0,57) :
return self.age34_36[original_amount]
else:
print('ERROR:女子40岁以前测试曲臂悬垂,原始成绩的数据类型须为时间(datetime.time)类型')
elif 37 <= age <= 39:
if type(original_amount) is dt.time: # 核查是否是日期格式
if original_amount < dt.time(0,0,18):
return 0
elif original_amount > dt.time(0,0,54):
return 100+((original_amount.hour-0)*3600+(original_amount.minute-0)*60+original_amount.second-54)/5
elif dt.time(0,0,18) <= original_amount <= dt.time(0,0,54) :
return self.age37_39[original_amount]
else:
print('ERROR:女子40岁以前测试曲臂悬垂,原始成绩的数据类型须为时间(datetime.time)类型')
# 计算俯卧撑
elif 40 <= age <= 42:
if type(original_amount) is int: # 核查数据是否是整型
if original_amount < 13:
return 0
elif original_amount > 30:
return 100 + (original_amount-30)*0.5
elif 13 <= original_amount <= 30 :
return self.age40_42[original_amount]
else:
print('ERROR:女子40岁以上测试俯卧撑,原始成绩的数据类型须为整型(Int)类型')
elif 43 <= age <= 45:
if type(original_amount) is int: # 核查数据是否是整型
if original_amount < 11:
return 0
- 1
- 2
- 3
- 4
- 5
- 6
前往页