🛠️ToolsShed

心率区间计算器

根据年龄和静息心率计算5个训练心率区间。

心率区间计算器根据您的年龄和可选的测量静息心率识别您的五个训练心率区间。在特定心率区间内训练可以针对不同的生理适应:区间 1(恢复)以最小疲劳改善基础体能,区间 2(有氧基础)训练脂肪燃烧和耐力,区间 3-5 分别实现更高强度的改善。

输入您的年龄,工具使用最常见的公式(220 减年龄)估算您的最大心率 (MHR)。如果您从健身测试中知道实际 MHR,请输入以获得更准确的区间。添加您的静息心率可激活 Karvonen 方法进行更个性化的计算。

要有效使用心率区间,请在锻炼时佩戴心率监测器,并在计划的努力持续时间内保持在目标区间内。大多数休闲运动员受益于将大部分训练时间(约 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.