🛠️ToolsShed

Macro Calculator

Calculate daily carbohydrate, protein, and fat targets based on your calorie goal.

Kalkulator Makro menghitung asupan harian yang direkomendasikan dari tiga makronutrien — protein, karbohidrat, dan lemak — berdasarkan target kalori dan tujuan kebugaran Anda. Makronutrien adalah komponen penyedia energi dari makanan.

Masukkan target kalori harian, berat badan, dan tujuan kebugaran utama Anda. Alat menerapkan rasio makro berbasis bukti: untuk penambahan otot, target protein yang lebih tinggi (sekitar 1,6-2,2g per kg berat badan) dengan karbohidrat yang cukup dan asupan lemak sedang.

Target makro adalah panduan, bukan aturan mutlak. Respons individu bervariasi, dan banyak orang menemukan bahwa melacak makro selama beberapa minggu membangun kesadaran nutrisi yang cukup untuk makan dengan baik secara intuitif tanpa penghitungan ketat.

Pertanyaan yang Sering Diajukan

Implementasi Kode

def calculate_macros(weight_kg: float, height_cm: float, age: int,
                     sex: str, activity: float, goal: str) -> dict:
    """
    Calculate TDEE and macronutrient targets using Mifflin-St Jeor BMR.
    sex: 'male' or 'female'
    activity: 1.2=sedentary, 1.375=light, 1.55=moderate, 1.725=active, 1.9=very active
    goal: 'lose' (-500 kcal), 'maintain', 'gain' (+300 kcal)
    """
    if sex == "male":
        bmr = 10 * weight_kg + 6.25 * height_cm - 5 * age + 5
    else:
        bmr = 10 * weight_kg + 6.25 * height_cm - 5 * age - 161

    tdee = bmr * activity
    adjustment = {"lose": -500, "maintain": 0, "gain": 300}.get(goal, 0)
    target_calories = tdee + adjustment

    # Macro splits (lose: 40/35/25, maintain: 35/40/25, gain: 30/45/25)
    splits = {"lose": (0.40, 0.35, 0.25), "maintain": (0.35, 0.40, 0.25), "gain": (0.30, 0.45, 0.25)}
    p_ratio, c_ratio, f_ratio = splits.get(goal, (0.35, 0.40, 0.25))

    protein_g = target_calories * p_ratio / 4
    carbs_g   = target_calories * c_ratio / 4
    fat_g     = target_calories * f_ratio / 9

    return {
        "bmr": round(bmr), "tdee": round(tdee),
        "target_calories": round(target_calories),
        "protein_g": round(protein_g), "carbs_g": round(carbs_g), "fat_g": round(fat_g),
    }

r = calculate_macros(70, 175, 30, "male", 1.55, "lose")
print(f"BMR             : {r['bmr']} kcal")
print(f"TDEE            : {r['tdee']} kcal")
print(f"Target Calories : {r['target_calories']} kcal")
print(f"Protein         : {r['protein_g']} g")
print(f"Carbs           : {r['carbs_g']} g")
print(f"Fat             : {r['fat_g']} g")

Comments & Feedback

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