Spaces:
Running
Running
File size: 4,872 Bytes
57199ed |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 |
import gradio as gr
def calculate_bmi(height, weight):
# Calculate BMI using the provided height and weight
# BMI Formula: weight (kg) / (height (m) ** 2)
height_m = height / 100 # Convert height from cm to m
bmi = weight / (height_m ** 2)
return bmi
def calculate_bmr(age, gender, height, weight):
# Calculate Basal Metabolic Rate (BMR) using the provided age, gender, height, and weight
if gender == "Nam":
# BMR Formula for males: 88.362 + (13.397 x weight in kg) + (4.799 x height in cm) - (5.677 x age in years)
bmr = 88.362 + (13.397 * weight) + (4.799 * height) - (5.677 * age)
else:
# BMR Formula for females: 447.593 + (9.247 x weight in kg) + (3.098 x height in cm) - (4.330 x age in years)
bmr = 447.593 + (9.247 * weight) + (3.098 * height) - (4.330 * age)
return bmr
def calculate_tdee(bmr, activity_level):
# Calculate Total Daily Energy Expenditure (TDEE) using the provided BMR and activity level
tdee = bmr * activity_level
return tdee
def calculate_daily_calories_goal(tdee, goal):
# Calculate the daily calorie goal based on the provided TDEE and goal
if goal == "Giảm cân":
calories_goal = tdee - 500 # Aim for a 500 calorie deficit per day for weight loss
elif goal == "Tăng cân":
calories_goal = tdee + 500 # Aim for a 500 calorie surplus per day for weight gain
else:
calories_goal = tdee # Maintain current weight
if calories_goal < 0 :
return 0
else :
return calories_goal
def get_activity_factor(activity_input):
"""
Get the activity factor based on the selected option.
Args:
activity_input (str): Selected activity option.
Returns:
float: Activity factor based on the selected option.
"""
activity_factor_map = {
'Không': 1.2,
'Có': 1.55,
'Thường Xuyên': 1.725
}
return activity_factor_map.get(activity_input, 1.2)
def process(height, weight, age, gender, activities, goal):
# Determine activity level
activity_level = get_activity_factor(activities)
# Calculate BMR
bmr = calculate_bmr(age, gender, height, weight)
# Calculate TDEE
tdee = calculate_tdee(bmr, activity_level)
# Calculate BMI
bmi = calculate_bmi(height, weight)
# Determine BMI category based on gender
bmi_category = ""
if gender == "Nam":
if bmi < 20:
bmi_category = "Thiếu cân, cần có chế độ ăn phù hợp để cải thiện tình trạng này"
elif 20 <= bmi < 25:
bmi_category = "Bình thường, thậm chí ở trong tình trạng tốt nếu bạn thường xuyên tập thể dục và ăn một chế độ ăn hợp lý"
elif 25 <= bmi < 30:
bmi_category = "Thừa cân, cần áp dụng biện pháp để khắc phục tình trạng trên"
else:
bmi_category = "Béo phì nặng, nếu không cải thiện sớm có thể gây ra các vấn đề liên quan đến tiêu hóa, hệ tuần hoàn, v.v."
else:
if bmi < 18:
bmi_category = "Thiếu cân, thiếu dinh dưỡng"
elif 18 <= bmi < 23:
bmi_category = "Bình thường"
elif 23 <= bmi < 30:
bmi_category = "Thừa cân"
else:
bmi_category = "Béo phì"
# Calculate daily calorie goal
calo_suggestion = calculate_daily_calories_goal(tdee, goal)
return bmi, bmr, tdee, bmi_category, calo_suggestion
inputs = [
gr.inputs.Number(label=" Chiều Cao (cm)"),
gr.inputs.Number(label=" Cân Nặng (kg)"),
gr.inputs.Number(label="Tuổi"),
gr.inputs.Radio(['Nam', 'Nữ'], label="Giới Tính"),
gr.inputs.Radio(['Không', "Có", 'Thường Xuyên'], label="Hoạt Động Thể Thao", default="Không" ),
gr.inputs.Radio(['Giảm cân', 'Tăng cân', 'Duy trì'], label="Mục Tiêu", default="Giảm cân")
]
outputs = [
gr.outputs.Textbox(label="Chỉ số BMI"),
gr.outputs.Textbox(label="Chỉ số BMR"),
gr.outputs.Textbox(label="Chỉ số TDEE"),
gr.outputs.Textbox(label="Lượng Calories mỗi ngày nên là:")
]
def do(height, weight, age, gender, activities, goal):
bmi, bmr, tdee, bmi_category, calorie_goal = process(height, weight, age, gender, activities, goal)
# Format the values with 2 decimal places
bmi = "{:.1f}".format(bmi)
bmr = "{:.1f}".format(bmr)
tdee = "{:.1f}".format(tdee)
calorie_goal = "{:.1f}".format(calorie_goal)
bmr = f"{bmr} / Ngày"
tdee = f"{tdee} / Ngày"
calorie_goal = f"{calorie_goal} / Ngày "
return bmi,bmr,tdee, calorie_goal
# Create a Gradio interface
interface = gr.Interface(fn=do, inputs=inputs, outputs=outputs,allow_flagging="never")
# Launch the interface
interface.launch()
|