Exercise Recovery Calculator
Estimate optimal recovery time based on workout intensity and type.
Frequently Asked Questions
Code Implementation
def recovery_hours(intensity, volume_sets, muscle_group_size, fitness_level):
"""
Estimate recovery time in hours after a resistance training session.
intensity: "low" | "moderate" | "high" | "maximal"
volume_sets: total working sets in the session (e.g., 12)
muscle_group_size: "small" (arms, calves) | "medium" (chest, back) | "large" (legs, full-body)
fitness_level: "beginner" | "intermediate" | "advanced"
"""
# Base recovery hours by intensity
base = {"low": 24, "moderate": 36, "high": 48, "maximal": 72}
hours = base.get(intensity, 36)
# Volume modifier (each set beyond 10 adds ~1 hour)
hours += max(0, volume_sets - 10) * 1.0
# Muscle group size modifier
size_mod = {"small": 0.8, "medium": 1.0, "large": 1.3}
hours *= size_mod.get(muscle_group_size, 1.0)
# Fitness level modifier (beginners need more recovery)
level_mod = {"beginner": 1.3, "intermediate": 1.0, "advanced": 0.85}
hours *= level_mod.get(fitness_level, 1.0)
return round(hours)
def recovery_schedule(session_recovery_hours):
"""Suggest next training time from now."""
from datetime import datetime, timedelta
now = datetime.now()
next_session = now + timedelta(hours=session_recovery_hours)
return {
"recovery_hours": session_recovery_hours,
"ready_at": next_session.strftime("%Y-%m-%d %H:%M"),
}
# Example usage
scenarios = [
("low", 8, "small", "intermediate"),
("moderate",12, "medium", "intermediate"),
("high", 15, "large", "beginner"),
("maximal", 5, "large", "advanced"),
]
print(f"{'Scenario':<40} {'Recovery (h)'}")
print("-" * 55)
for intensity, sets, size, level in scenarios:
h = recovery_hours(intensity, sets, size, level)
label = f"{intensity}/{sets} sets/{size}/{level}"
print(f"{label:<40} {h}h")Comments & Feedback
Comments are powered by Giscus. Sign in with GitHub to leave a comment.