🛠️ToolsShed

Push-Up Fitness Test

Score your push-up fitness test based on YMCA standards by age and gender.

Standards by Age & Gender (Male · 20-29)

PushUpFitnessTest.categoryPushUpFitnessTest.minPushUps
Excellent54+
Good47+
PushUpFitnessTest.aboveAvg37+
Average29+
PushUpFitnessTest.belowAvg22+
Poor17+

PushUpFitnessTest.sourceNote

Frequently Asked Questions

Code Implementation

# Push-up fitness test score calculator (YMCA standards)

YMCA_STANDARDS = {
    "male": {
        (18, 25): [("Excellent", 56), ("Good", 47), ("Above Average", 41),
                   ("Average", 34), ("Below Average", 25), ("Poor", 18), ("Very Poor", 0)],
        (26, 35): [("Excellent", 51), ("Good", 41), ("Above Average", 35),
                   ("Average", 29), ("Below Average", 22), ("Poor", 17), ("Very Poor", 0)],
        (36, 45): [("Excellent", 46), ("Good", 36), ("Above Average", 30),
                   ("Average", 24), ("Below Average", 18), ("Poor", 13), ("Very Poor", 0)],
        (46, 55): [("Excellent", 41), ("Good", 31), ("Above Average", 25),
                   ("Average", 20), ("Below Average", 13), ("Poor", 9), ("Very Poor", 0)],
        (56, 65): [("Excellent", 36), ("Good", 26), ("Above Average", 21),
                   ("Average", 17), ("Below Average", 9), ("Poor", 6), ("Very Poor", 0)],
    },
    "female": {
        (18, 25): [("Excellent", 42), ("Good", 33), ("Above Average", 28),
                   ("Average", 21), ("Below Average", 15), ("Poor", 10), ("Very Poor", 0)],
        (26, 35): [("Excellent", 39), ("Good", 30), ("Above Average", 24),
                   ("Average", 19), ("Below Average", 13), ("Poor", 8), ("Very Poor", 0)],
        (36, 45): [("Excellent", 34), ("Good", 25), ("Above Average", 20),
                   ("Average", 14), ("Below Average", 9), ("Poor", 5), ("Very Poor", 0)],
        (46, 55): [("Excellent", 29), ("Good", 20), ("Above Average", 15),
                   ("Average", 10), ("Below Average", 6), ("Poor", 3), ("Very Poor", 0)],
        (56, 65): [("Excellent", 24), ("Good", 17), ("Above Average", 12),
                   ("Average", 7), ("Below Average", 4), ("Poor", 2), ("Very Poor", 0)],
    },
}

def get_push_up_rating(age: int, gender: str, count: int) -> str:
    gender = gender.lower()
    if gender not in YMCA_STANDARDS:
        return "Unknown gender"
    for age_range, standards in YMCA_STANDARDS[gender].items():
        if age_range[0] <= age <= age_range[1]:
            for rating, threshold in standards:
                if count >= threshold:
                    return rating
            return "Very Poor"
    return "Age out of range"

# Examples
print(get_push_up_rating(28, "male", 35))    # Good
print(get_push_up_rating(35, "female", 22))  # Above Average

Comments & Feedback

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