欢迎光临
我们一直在努力

基于食物成分,计算消化速率与饱腹感时长,辅助规划三餐,控制体重。

基于食物成分的消化速率与饱腹感规划系统

 

一、实际应用场景描述

 

场景背景:

 

某健康管理公司正在开发个性化饮食规划平台,帮助减肥人群和健身爱好者科学安排三餐。用户希望根据个人代谢情况和目标体重,获得精准的食物选择和进食时间安排。

 

业务需求:

 

1. 录入日常食物的营养成分数据

2. 计算不同食物的消化速率(Glycemic Response & Gastric Emptying Rate)

3. 预测饱腹感持续时间(Satiety Duration)

4. 根据目标热量缺口,智能推荐三餐搭配

5. 生成个性化饮食时间表

 

目标用户画像:

 

– 减脂期人群:需要控制总热量,延长饱腹感

– 增肌期人群:需要合理分配蛋白质,优化消化吸收

– 血糖管理人群:需要低GI食物,稳定血糖波动

 

二、引入痛点

 

痛点 传统解决方案 本方案优势

食物选择凭经验 查表+主观判断 数据驱动的科学计算

饱腹感预测不准 固定时间间隔 基于成分动态计算

热量控制粗糙 简单加减法 考虑食物热效应(TEF)

缺乏个性化 一刀切建议 结合个人代谢参数

执行难度大 复杂食谱 简单易用的规划工具

 

核心痛点: 传统饮食规划无法将食物微观成分与人体消化生理过程精确关联,导致"吃多少、何时吃"的决策缺乏科学依据。

 

三、核心逻辑讲解

 

┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐

│ 输入食物成分 │────▶│ 计算消化速率 │────▶│ 预测饱腹感时长 │

│ 个人代谢参数 │ │ (胃排空模型) │ │ (饱腹感指数) │

└─────────────────┘ └─────────────────┘ └─────────────────┘

                                │ │

                                ▼ ▼

                        ┌─────────────────┐ ┌─────────────────┐

                        │ 计算净热量摄入 │ │ 生成用餐时间表 │

                        │ (考虑TEF) │ │ (优化饱腹窗口) │

                        └─────────────────┘ └─────────────────┘

                                │ │

                                └──────────────┬──────────┘

                                               ▼

                                       ┌─────────────────┐

                                       │ 输出三餐规划 │

                                       │ 体重控制建议 │

                                       └─────────────────┘

 

关键算法模型:

 

1. 消化速率模型(基于分子化学工程)

消化速率常数(k_d) = α × (碳水化合物%/100) / (脂肪%×β + 纤维%×γ)

 

理论基础:

– 碳水化合物水解速率取决于糖苷键类型和分子量分布

– 脂肪通过形成胶束延缓胃排空(Micelle Formation动力学)

– 膳食纤维增加食糜粘度,阻碍酶扩散(Mass Transfer阻力)

2. 饱腹感指数模型

饱腹感评分(Satiety Index) = w₁×蛋白质% + w₂×纤维% – w₃×血糖负荷(GL)

 

生理学基础:

– 蛋白质刺激CCK分泌最强(十二指肠I细胞)

– 纤维增加胃内容物体积,激活机械感受器

– GL反映葡萄糖释放速率对胰岛素峰值的影响

3. 胃排空时间预测

胃排空半衰期(t₁/₂) = τ × ln(2) / k_d

 

其中τ为个体特征常数(受年龄、性别、运动影响)

 

四、代码模块化实现

 

项目结构

 

diet_planning_system/

├── main.py # 主程序入口

├── nutrition_core.py # 营养计算核心引擎

├── digestion_models.py # 消化动力学模型

├── satiety_calculator.py # 饱腹感计算器

├── meal_planner.py # 三餐规划器

├── data_models.py # 数据模型定义

├── food_database.py # 食物数据库

├── config.py # 配置文件

├── utils.py # 工具函数

├── README.md # 项目说明

└── requirements.txt # 依赖清单

 

1. config.py – 配置文件

 

"""

饮食规划系统配置文件

包含消化动力学参数、饱腹感权重、代谢常数等

"""

 

from dataclasses import dataclass

from typing import Dict, Tuple

 

 

@dataclass

class DigestionConfig:

    """消化动力学配置"""

    

    # 消化速率系数 (基于分子化学工程研究)

    CARB_HYDROLYSIS_RATE: float = 0.85 # 碳水化合物水解速率常数

    FAT_EMULSIFICATION_K: float = 0.32 # 脂肪乳化速率常数

    FIBER_DIFFUSION_K: float = 0.15 # 纤维扩散阻力系数

    

    # 胃排空基础参数

    GASTRIC_EMPTYING_TAU: float = 45.0 # 基础胃排空时间常数(分钟)

    INTESTINAL_TRANSIT_BASE: float = 180.0 # 小肠传输基础时间(分钟)

    

    # 个体差异因子

    AGE_FACTOR_SLOPE: float = -0.15 # 年龄对消化的影响斜率

    GENDER_FACTOR_MALE: float = 1.12 # 男性修正因子

    EXERCISE_FACTOR_ACTIVE: float = 1.25 # 活跃人群修正因子

 

 

@dataclass  

class SatietyConfig:

    """饱腹感计算配置"""

    

    # 饱腹感贡献权重 (基于Satiety Index研究)

    PROTEIN_WEIGHT: float = 0.35 # 蛋白质饱腹感权重

    FIBER_WEIGHT: float = 0.40 # 膳食纤维权重

    GL_PENALTY_WEIGHT: float = 0.25 # 血糖负荷惩罚权重

    

    # 宏量营养素热效应 (TEF)

    TEF_PROTEIN: float = 0.20 # 蛋白质热效应 20%

    TEF_CARB: float = 0.05 # 碳水化合物热效应 5%

    TEF_FAT: float = 0.02 # 脂肪热效应 2%

    

    # 饱腹感持续时间系数

    SATIETY_DURATION_BASE: float = 120.0 # 基础饱腹时长(分钟)

    SATIETY_DECAY_RATE: float = 0.008 # 饱腹感衰减率

 

 

@dataclass

class MetabolicConfig:

    """代谢参数配置"""

    

    # 基础代谢率估算系数 (Mifflin-St Jeor Equation)

    BMR_MALE_CONSTANT: float = 88.362

    BMR_FEMALE_CONSTANT: float = 447.593

    BMR_WEIGHT_COEFF: float = 13.397

    BMR_HEIGHT_COEFF: float = 4.799

    BMR_AGE_COEFF: float = 5.677

    

    # 活动水平乘数

    ACTIVITY_SEDENTARY: float = 1.2 # 久坐

    ACTIVITY_LIGHT: float = 1.375 # 轻度活动

    ACTIVITY_MODERATE: float = 1.55 # 中度活动

    ACTIVITY_ACTIVE: float = 1.725 # 高度活动

    ACTIVITY_VERY_ACTIVE: float = 1.9 # 极高活动

    

    # 目标热量缺口 (安全减重范围)

    MIN_CALORIE_DEFICIT: int = 300 # 最小缺口 kcal/day

    MAX_CALORIE_DEFICIT: int = 750 # 最大缺口 kcal/day

    RECOMMENDED_DEFICIT: int = 500 # 推荐缺口 kcal/day

 

 

# 全局配置实例

DEFAULT_DIGESTION_CONFIG = DigestionConfig()

DEFAULT_SATIETY_CONFIG = SatietyConfig()

DEFAULT_METABOLIC_CONFIG = MetabolicConfig()

 

 

# 常见食物数据库 (每100g可食用部分)

FOOD_DATABASE_TEMPLATE = {

    "燕麦片": {

        "calories": 389, "protein": 16.9, "carb": 66.3, "fat": 6.9, 

        "fiber": 10.6, "gi": 55, "water": 8.0, "category": "谷物"

    },

    "鸡胸肉": {

        "calories": 165, "protein": 31.0, "carb": 0.0, "fat": 3.6,

        "fiber": 0.0, "gi": 0, "water": 65.0, "category": "肉类"

    },

    "糙米": {

        "calories": 348, "protein": 7.9, "carb": 73.7, "fat": 2.9,

        "fiber": 3.5, "gi": 68, "water": 12.0, "category": "谷物"

    },

    "西兰花": {

        "calories": 34, "protein": 2.8, "carb": 6.6, "fat": 0.4,

        "fiber": 2.6, "gi": 15, "water": 89.3, "category": "蔬菜"

    },

    "希腊酸奶": {

        "calories": 59, "protein": 10.0, "carb": 3.6, "fat": 0.4,

        "fiber": 0.0, "gi": 14, "water": 85.0, "category": "乳制品"

    },

    "牛油果": {

        "calories": 160, "protein": 2.0, "carb": 8.5, "fat": 14.7,

        "fiber": 6.7, "gi": 15, "water": 73.2, "category": "水果"

    },

    "鸡蛋": {

        "calories": 155, "protein": 13.0, "carb": 1.1, "fat": 11.0,

        "fiber": 0.0, "gi": 48, "water": 74.6, "category": "蛋类"

    },

    "红薯": {

        "calories": 86, "protein": 1.6, "carb": 20.1, "fat": 0.1,

        "fiber": 3.0, "gi": 54, "water": 77.3, "category": "薯类"

    },

    "三文鱼": {

        "calories": 208, "protein": 20.4, "carb": 0.0, "fat": 13.4,

        "fiber": 0.0, "gi": 0, "water": 61.0, "category": "鱼类"

    },

    "杏仁": {

        "calories": 579, "protein": 21.2, "carb": 21.6, "fat": 49.9,

        "fiber": 12.5, "gi": 15, "water": 4.7, "category": "坚果"

    }

}

 

2. data_models.py – 数据模型

 

"""

数据模型定义模块

使用Python dataclass实现类型安全的营养数据模型

"""

 

from dataclasses import dataclass, field

from typing import Dict, List, Optional

from datetime import datetime

from enum import Enum

 

 

class Gender(Enum):

    """性别枚举"""

    MALE = "male"

    FEMALE = "female"

 

 

class ActivityLevel(Enum):

    """活动水平枚举"""

    SEDENTARY = "sedentary" # 久坐

    LIGHT = "light" # 轻度活动

    MODERATE = "moderate" # 中度活动

    ACTIVE = "active" # 高度活动

    VERY_ACTIVE = "very_active" # 极高活动

 

 

class MealType(Enum):

    """餐次类型枚举"""

    BREAKFAST = "breakfast"

    LUNCH = "lunch"

    DINNER = "dinner"

    SNACK = "snack"

 

 

@dataclass

class FoodItem:

    """

    食物项目数据类

    

    属性说明:

    – name: 食物名称

    – calories: 热量 (kcal/100g)

    – protein: 蛋白质含量 (%)

    – carb: 碳水化合物含量 (%)

    – fat: 脂肪含量 (%)

    – fiber: 膳食纤维含量 (%)

    – gi: 升糖指数

    – water: 水分含量 (%)

    – category: 食物类别

    """

    name: str

    calories: float

    protein: float

    carb: float

    fat: float

    fiber: float

    gi: int

    water: float

    category: str

    

    def __post_init__(self):

        """初始化后验证数据有效性"""

        total_macro = self.protein + self.carb + self.fat

        if total_macro > 100:

            raise ValueError(f"宏量营养素总和不能超过100%,当前: {total_macro}%")

        if not 0 <= self.gi <= 100:

            raise ValueError(f"GI值必须在0-100之间,当前: {self.gi}")

        if not 0 <= self.water <= 100:

            raise ValueError(f"水分含量必须在0-100之间,当前: {self.water}")

 

 

@dataclass

class UserProfile:

    """

    用户档案数据类

    

    包含个人基本信息与代谢参数

    """

    user_id: str = field(default_factory=lambda: f"user_{datetime.now().strftime('%Y%m%d_%H%M%S')}")

    name: str = ""

    age: int = 25

    gender: Gender = Gender.MALE

    height_cm: float = 170.0

    weight_kg: float = 70.0

    activity_level: ActivityLevel = ActivityLevel.MODERATE

    target_weight_kg: Optional[float] = None

    dietary_restrictions: List[str] = field(default_factory=list)

    

    @property

    def bmr(self) -> float:

        """

        计算基础代谢率 (Mifflin-St Jeor Equation)

        

        Returns:

            BMR值 (kcal/day)

        """

        if self.gender == Gender.MALE:

            bmr = (DEFAULT_METABOLIC_CONFIG.BMR_MALE_CONSTANT +

                   DEFAULT_METABOLIC_CONFIG.BMR_WEIGHT_COEFF * self.weight_kg +

                   DEFAULT_METABOLIC_CONFIG.BMR_HEIGHT_COEFF * self.height_cm –

                   DEFAULT_METABOLIC_CONFIG.BMR_AGE_COEFF * self.age)

        else:

            bmr = (DEFAULT_METABOLIC_CONFIG.BMR_FEMALE_CONSTANT +

                   DEFAULT_METABOLIC_CONFIG.BMR_WEIGHT_COEFF * self.weight_kg +

                   DEFAULT_METABOLIC_CONFIG.BMR_HEIGHT_COEFF * self.height_cm –

                   DEFAULT_METABOLIC_CONFIG.BMR_AGE_COEFF * self.age)

        return round(bmr, 2)

    

    @property

    def tdee(self) -> float:

        """

        计算每日总能量消耗 (Total Daily Energy Expenditure)

        

        Returns:

            TDEE值 (kcal/day)

        """

        activity_multipliers = {

            ActivityLevel.SEDENTARY: DEFAULT_METABOLIC_CONFIG.ACTIVITY_SEDENTARY,

            ActivityLevel.LIGHT: DEFAULT_METABOLIC_CONFIG.ACTIVITY_LIGHT,

            ActivityLevel.MODERATE: DEFAULT_METABOLIC_CONFIG.ACTIVITY_MODERATE,

            ActivityLevel.ACTIVE: DEFAULT_METABOLIC_CONFIG.ACTIVITY_ACTIVE,

            ActivityLevel.VERY_ACTIVE: DEFAULT_METABOLIC_CONFIG.ACTIVITY_VERY_ACTIVE

        }

        return round(self.bmr * activity_multipliers[self.activity_level], 2)

    

    @property

    def recommended_calorie_intake(self) -> float:

        """

        计算推荐每日热量摄入

        

        Returns:

            推荐热量 (kcal/day)

        """

        if self.target_weight_kg and self.target_weight_kg < self.weight_kg:

            # 减重模式:创造热量缺口

            deficit = DEFAULT_METABOLIC_CONFIG.RECOMMENDED_DEFICIT

            return max(self.tdee – deficit, self.bmr)

        return self.tdee

 

 

@dataclass

class DigestionResult:

    """

    消化分析结果数据类

    """

    food_item: FoodItem

    digestion_rate_constant: float # 消化速率常数 k_d (min⁻¹)

    gastric_emptying_halflife: float # 胃排空半衰期 (分钟)

    glycemic_response_curve: List[Tuple[float, float]] # 血糖响应曲线

    estimated_absorption_time: float # 预计完全吸收时间 (分钟)

    tef_contribution: float # 食物热效应贡献 (kcal)

 

 

@dataclass

class SatietyResult:

    """

    饱腹感分析结果数据类

    """

    food_item: FoodItem

    satiety_index: float # 饱腹感指数 (0-100)

    predicted_duration_minutes: float # 预测饱腹时长 (分钟)

    fullness_onset_minutes: float # 饱腹感开始时间 (分钟)

    hunger_return_risk: str # 饥饿回归风险等级

 

 

@dataclass

class MealPlan:

    """

    餐次规划数据类

    """

    meal_type: MealType

    planned_foods: List[FoodItem]

    total_calories: float

    total_protein_g: float

    total_carb_g: float

    total_fat_g: float

    average_satiety_duration: float

    recommended_eating_time: str

    digestion_completion_time: str

 

3. digestion_models.py – 消化动力学模型

 

"""

消化动力学模型模块

基于分子化学工程和生理学研究实现食物消化模拟

"""

 

import math

from typing import List, Tuple

from dataclasses import dataclass

from data_models import FoodItem, DigestionResult

from config import DEFAULT_DIGESTION_CONFIG, DEFAULT_SATIETY_CONFIG

 

 

class DigestionSimulator:

    """

    消化模拟器类

    

    基于分子化学工程原理模拟食物在人体内的消化过程:

    1. 口腔阶段:淀粉初步水解

    2. 胃阶段:蛋白质变性,脂肪乳化

    3. 小肠阶段:酶促反应,营养吸收

    4. 大肠阶段:纤维发酵

    

    核心理论:

    – Michaelis-Menten酶动力学

    – 胶体化学乳化理论

    – 传质扩散模型

    """

    

    def __init__(self, config: DEFAULT_DIGESTION_CONFIG = None):

        """

        初始化消化模拟器

        

        Args:

            config: 消化动力学配置

        """

        self.config = config or DEFAULT_DIGESTION_CONFIG

    

    def calculate_digestion_rate(self, food: FoodItem, user_profile=None) -> float:

        """

        计算食物消化速率常数 k_d

        

        数学模型:

        k_d = α × (Carb%/100) / (Fat%×β + Fiber%×γ)

        

        理论基础:

        1. 碳水化合物水解速率与糖苷键密度成正比

        2. 脂肪通过形成胶束(Micelle)延缓胃排空

        3. 膳食纤维增加食糜粘度,阻碍酶扩散

        

        Args:

            food: 食物项目

            user_profile: 用户档案(用于个体化修正)

            

        Returns:

            消化速率常数 k_d (min⁻¹)

        """

        carb_ratio = food.carb / 100.0

        fat_factor = food.fat * self.config.FAT_EMULSIFICATION_K

        fiber_factor = food.fiber * self.config.FIBER_DIFFUSION_K

        

        # 基础消化速率

        k_d = self.config.CARB_HYDROLYSIS_RATE * carb_ratio / (fat_factor + fiber_factor + 0.001)

        

        # 个体化修正

        if user_profile:

            # 年龄修正:消化功能随年龄下降

            age_factor = 1.0 + self.config.AGE_FACTOR_SLOPE * (user_profile.age – 25)

            k_d *= max(age_factor, 0.7)

            

            # 性别修正:男性胃酸分泌通常更强

            if user_profile.gender == Gender.MALE:

                k_d *= self.config.GENDER_FACTOR_MALE

            

            # 运动修正:活跃人群消化酶活性更高

            if user_profile.activity_level in [ActivityLevel.ACTIVE, ActivityLevel.VERY_ACTIVE]:

                k_d *= self.config.EXERCISE_FACTOR_ACTIVE

        

        return round(max(k_d, 0.01), 4) # 确保最小值

    

    def predict_gastric_emptying(self, food: FoodItem, user_profile=None) -> float:

        """

        预测胃排空半衰期

        

        数学模型:

        t₁/₂ = τ × ln(2) / k_d

        

        生理学基础:

        – 液体排空最快(约15-30分钟)

        – 碳水化合物次之(约1-2小时)

        – 蛋白质较慢(约2-4小时)

        – 脂肪最慢(约4-6小时)

        

        Args:

            food: 食物项目

            user_profile: 用户档案

            

        Returns:

            胃排空半衰期 (分钟)

        """

        k_d = self.calculate_digestion_rate(food, user_profile)

        tau = self.config.GASTRIC_EMPTYING_TAU

        

        # 食物形态修正

        if food.category in ["液体", "饮品"]:

            tau *= 0.4

        elif food.category in ["水果", "蔬菜"]:

            tau *= 0.7

        elif food.category in ["肉类", "鱼类"]:

            tau *= 1.5

        elif food.category in ["坚果", "种子"]:

            tau *= 1.8

        

        half_life = tau * math.log(2) / k_d

        return round(half_life, 2)

    

    def simulate_glycemic_response(self, food: FoodItem) -> List[Tuple[float, float]]:

        """

        模拟血糖响应曲线

        

        数学模型:

        G(t) = GI × C_max × exp(-t/τ) × (1 – exp(-k_a × t))

        

        参数说明:

        – GI: 升糖指数

        – C_max: 峰值血糖浓度系数

        – τ: 衰减时间常数

        – k_a: 吸收速率常数

        

        Args:

            food: 食物项目

            

        Returns:

            血糖响应曲线数据点 [(时间min, 血糖相对值), …]

        """

        gi_normalized = food.gi / 100.0

        carb_concentration = food.carb / 100.0

        

        # 曲线参数

        c_max = gi_normalized * carb_concentration * 1.2

        tau = 45.0 # 衰减时间常数 (分钟)

        k_a = self.calculate_digestion_rate(food) * 1.5 # 吸收速率

        

        curve_points = []

        time_points = [0, 15, 30, 45, 60, 90, 120, 150, 180]

        

        for t in time_points:

            # 血糖响应方程

            absorption_term = 1 – math.exp(-k_a * t)

            decay_term = math.exp(-t / tau)

            glucose_response = gi_normalized * c_max * decay_term * absorption_term

            curve_points.append((t, round(glucose_response, 3)))

        

        return curve_points

    

    def estimate_absorption_time(self, food: FoodItem, user_profile=None) -> float:

        """

        估计营养完全吸收时间

        

        综合胃排空和小肠传输时间

        

        Args:

            food: 食物项目

            user_profile: 用户档案

            

        Returns:

            完全吸收时间 (分钟)

        """

        gastric_t_half = self.predict_gastric_emptying(food, user_profile)

        

        # 小肠传输时间(与食物类型相关)

        if food.fiber > 5.0:

            intestinal_time = self.config.INTESTINAL_TRANSIT_BASE * 1.3

        else:

            intestinal_time = self.config.INTESTINAL_TRANSIT_BASE

        

        # 总吸收时间 = 4 × 胃排空半衰期 + 小肠传输

        total_time = 4 * gastric_t_half + intestinal_time

        return round(total_time, 2)

    

    def calculate_tef(self, food: FoodItem) -> float:

        """

        计算食物热效应 (Thermic Effect of Food)

        

        不同宏量营养素的TEF:

        – 蛋白质: 20-30% (平均20%)

        – 碳水化合物: 5-10% (平均5%)

        – 脂肪: 0-3% (平均2%)

        

        Args:

            food: 食物项目

            

        Returns:

            TEF贡献热量 (kcal)

        """

        protein_tef = food.protein / 100 * food.calories * DEFAULT_SATIETY_CONFIG.TEF_PROTEIN

        carb_tef = food.carb / 100 * food.calories * DEFAULT_SATIETY_CONFIG.TEF_CARB

        fat_tef = food.fat / 100 * food.calories * DEFAULT_SATIETY_CONFIG.TEF_FAT

        

        return round(protein_tef + carb_tef + fat_tef, 2)

    

    def analyze_food_digestion(self, food: FoodItem, user_profile=None) -> DigestionResult:

        """

        执行完整的食物消化分析

        

        Args:

            food: 食物项目

            user_profile: 用户档案

            

        Returns:

            DigestionResult: 完整消化分析结果

        """

        k_d = self.calculate_digestion_rate(food, user_profile)

        gastric_halflife = self.predict_gastric_emptying(food, user_profile)

        glycemic_curve = self.simulate_glycemic_response(food)

        absorption_time = self.estimate_absorption_time(food, user_profile)

        tef = self.calculate_tef(food)

        

        return DigestionResult(

            food_item=food,

            digestion_rate_constant=k_d,

            gastric_emptying_halflife=gastric_halflife,

            glycemic_response_curve=glycemic_curve,

            estimated_absorption_time=absorption_time,

            tef_contribution=tef

        )

 

 

class MolecularMechanismExplainer:

    """

    分子机制解释器

    

    将数学模型的化学工程原理转化为易懂的解释

    """

    

    @staticmethod

    def explain_digestion_rate(food: FoodItem) -> str:

        """

        解释特定食物的消化速率机制

        

        Args:

            food: 食物项目

            

        Returns:

            机制解释文本

        """

        explanations = []

        

        # 碳水化合物影响

        if food.carb > 50:

            explanations.append(

                f"• 高碳水化合物含量({food.carb}%)提供大量可水解糖苷键,"

                f"促进淀粉酶作用,加快消化速率"

            )

        

        # 脂肪影响

        if food.fat > 10:

            explanations.append(

                f"• 脂肪含量({food.fat}%)较高,需经胆汁盐乳化形成胶束(Micelle),"

                f"显著延缓胃排空和酶解过程"

            )

        

        # 纤维影响

        if food.fiber > 5:

            explanations.append(

                f"• 膳食纤维({food.fiber}%)增加食糜粘度,"

                f"阻碍酶分子扩散,降低有效碰撞频率"

            )

        

        # 蛋白质影响

        if food.protein > 20:

            explanations.append(

                f"• 高蛋白含量({food.protein}%)需经胃蛋白酶和胰蛋白酶逐步水解,"

                f"形成肽链和氨基酸,消化时间相对较长"

            )

        

        if not explanations:

            explanations.append("• 该食物成分均衡,消化过程相对平稳")

        

        return "\\n".join(explanations)

    

    @staticmethod

    def explain_satiety_mechanism(food: FoodItem) -> str:

        """

        解释饱腹感产生机制

        

        Args:

            food: 食物项目

            

        Returns:

            机制解释文本

        """

        mechanisms = []

        

        # 胃扩张机制

        water_content = food.water

        if water_content > 80:

            mechanisms.append(

                f"• 高水分含量({water_content}%)迅速填充胃部容积,"

                f"激活机械感受器(stretch receptors),触发迷走神经饱腹信号"

            )

        

        # 激素调节机制

        if food.protein > 15:

            mechanisms.append(

                f"• 充足蛋白质({food.protein}%)强烈刺激十二指肠CCK(Cholecystokinin)分泌,"

                f"抑制胃排空并促进胰腺酶释放"

            )

        

        # 血糖稳态机制

        if food.gi < 35:

            mechanisms.append(

                f"• 低血糖指数(GI={food.gi})意味着葡萄糖缓慢释放,"

                f"避免胰岛素峰值导致的血糖骤降和饥饿感反弹"

            )

        

        # 纤维发酵机制

        if food.fiber > 8:

            mechanisms.append(

                f"• 丰富膳食纤维({food.fiber}%)在结肠发酵产生短链脂肪酸(SCFA),"

                f"调节食欲相关激素(如GLP-1、PYY)分泌"

            )

        

        return "\\n".join(mechanisms)

 

4. satiety_calculator.py – 饱腹感计算器

 

"""

饱腹感计算器模

利用AI解决实际问题,如果你觉得这个工具好用,欢迎关注长安牧笛!

赞(0)
未经允许不得转载:171主机测评 » 基于食物成分,计算消化速率与饱腹感时长,辅助规划三餐,控制体重。
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址