Калькулятор зон сердечного ритма

Рассчитайте 5 тренировочных зон сердечного ритма по возрасту и пульсу покоя.

Калькулятор зон сердечного ритма определяет пять тренировочных зон на основе возраста и, по желанию, измеренного пульса в покое. Тренировки в конкретных зонах ЧСС нацелены на различные физиологические адаптации: от восстановления до максимального увеличения VO2max.

Введите возраст — инструмент оценит максимальную ЧСС (ЧСС макс) по наиболее распространённой формуле: 220 минус возраст. Если вы знаете свой реальный ЧСС макс по фитнес-тесту, введите его для более точных зон. Добавление пульса в покое активирует метод Карвонена.

Для эффективного использования зон носите кардиомонитор во время тренировок и старайтесь оставаться в целевой зоне. Большинству любителей рекомендуется проводить около 80% тренировочного времени в зонах 1-2 и 20% — в более интенсивных зонах.

Часто задаваемые вопросы

Реализация кода

def calculate_hr_zones(age: int, resting_hr: int = 60, method: str = "fox") -> dict:
    """
    Calculate heart rate training zones.
    method: 'fox' (220 - age), 'tanaka' (208 - 0.7 * age), 'karvonen' (uses resting HR)
    """
    if method == "tanaka":
        max_hr = 208 - 0.7 * age
    else:
        max_hr = 220 - age

    if method == "karvonen":
        hrr = max_hr - resting_hr  # Heart Rate Reserve
        zones = {
            "Zone 1 (Recovery)":  (resting_hr + 0.50 * hrr, resting_hr + 0.60 * hrr),
            "Zone 2 (Aerobic)":   (resting_hr + 0.60 * hrr, resting_hr + 0.70 * hrr),
            "Zone 3 (Tempo)":     (resting_hr + 0.70 * hrr, resting_hr + 0.80 * hrr),
            "Zone 4 (Threshold)": (resting_hr + 0.80 * hrr, resting_hr + 0.90 * hrr),
            "Zone 5 (Max)":       (resting_hr + 0.90 * hrr, max_hr),
        }
    else:
        zones = {
            "Zone 1 (Recovery)":  (0.50 * max_hr, 0.60 * max_hr),
            "Zone 2 (Aerobic)":   (0.60 * max_hr, 0.70 * max_hr),
            "Zone 3 (Tempo)":     (0.70 * max_hr, 0.80 * max_hr),
            "Zone 4 (Threshold)": (0.80 * max_hr, 0.90 * max_hr),
            "Zone 5 (Max)":       (0.90 * max_hr, max_hr),
        }

    print(f"Age: {age}, Max HR: {max_hr:.0f} bpm, Method: {method}")
    for name, (lo, hi) in zones.items():
        print(f"  {name}: {lo:.0f} - {hi:.0f} bpm")
    return zones

calculate_hr_zones(age=30, resting_hr=65, method="karvonen")

Comments & Feedback

Comments are powered by Giscus. Sign in with GitHub to leave a comment.