1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
| #!/usr/bin/env python
# Calculate days of recovery after a race. Based on the article appeared on the Running times magazine
# "It's the Recovery Stupid" by Pete Magill, using Tom Schwartz tables
# author: josevnz@kodegeek.com
# http://kodegeek.com/blog
import sys
class Recovery:
def __init__(self):
self.__ages = { '20':0, '30':1, '40':2, '50':3, '60':4, '70':5, '80':6 }
self.__fitnessLevel = { 'LOW':0, 'MEDIUM':1, 'HIGH':2 }
self.__daysBetweenWorkouts = [
[ 4.0, 3.0, 2.5 ],
[ 5.0, 4.0, 3.0 ],
[ 6.0, 4.5, 3.5 ],
[ 7.0, 5.0, 4.0 ],
[ 7.5, 6.0, 4.5 ],
[ 8.0, 6.5, 5.0 ],
[ 9.0, 7.0, 5.5 ]
]
self.__races = { '5K':0, '8K':1, '10K':2, '15K':3, '1/2 Mar':4, 'Mar':5 }
self.__intensityWorkout = { 'EASY':0, 'MEDIUM':1, 'HARD':2 }
self.__recoveryDaysAfterRace = [
[ 2, 3, 5 ],
[ 3, 5, 8 ],
[ 3.5, 6, 9 ],
[ 4, 7, 11 ],
[ 5.5, 9, 14 ],
[ 9, 17, 26 ]
]
self.__adjustment = { '20':1.0, '30':1.1, '40':1.2 , '50':1.3, '60':1.4, '70':1.5, '80':1.6 }
def getAgeBracket(self, age):
try:
dAge = int(age)
if dAge < 0:
raise Exception("Invalid age value: %s" % age)
for bracket in [ 20, 30, 40, 40, 50, 70, 80 ]:
if dAge >= bracket and dAge < = (bracket + 9):
return str(bracket)
# > 80 years
return 80
except (Exception), exp:
raise Exception("Invalid age: %s" % age)
def getDaysBetweenWorkouts(self, age, level):
try:
bracket = self.getAgeBracket(age)
dBracket = self.__ages[bracket]
intensity = self.__fitnessLevel[level]
return self.__daysBetweenWorkouts[dBracket][intensity] * self.__adjustment[bracket]
except (Exception), exp:
raise Exception("Invalid age or level: age=%s, level=%s" % (age, level))
def getDaysAfterRace(self, age, race, level):
try:
bracket = self.getAgeBracket(age)
dBracket = self.__races[race]
intensity = self.__intensityWorkout[level]
return self.__recoveryDaysAfterRace[dBracket][intensity] * self.__adjustment[bracket]
except (Exception), exp:
raise Exception("Invalid age race type or level: age=%s, race=%s, level=%s" % (age, race, level))
if __name__ == "__main__":
recovery = Recovery()
arg = sys.argv[1:]
days = 0
if len(arg) == 2:
days = recovery.getDaysBetweenWorkouts(arg[0], arg[1])
print "Days: %2.2f, for age: '%s' and level: '%s'" % (days, arg[0], arg[1])
elif len(arg) == 3:
days = recovery.getDaysAfterRace(arg[0], arg[1], arg[2])
print "Days: %2.2f, for age: '%s' and level: '%s', race=%s" % (days, arg[0], arg[2], arg[1])
else:
sys.exit(192)
# "com/kodegeek/fitness/recoveryrun.py" 76L, 2539C written |
Comentarios recientes