开发食材热量查询工具,输入食材名称。重量,查询热量,蛋白质,碳水含量,支持多食材组合计算,辅助减脂期饮食控制。

24 阅读4分钟
  1. 实际应用场景描述

在减脂或健身过程中,用户需要精确控制每日摄入的热量、蛋白质和碳水化合物。

目前市面上的营养查询工具往往:

  • 只支持单一食材查询
  • 无法批量计算多种食材组合
  • 数据更新不及时
  • 缺乏本地化食材库(如中式食材)

因此,我们开发一个本地化、可扩展、支持多食材组合的食材热量查询工具,帮助用户快速计算一餐或一天的营养摄入。

  1. 引入痛点

  2. 手动查表效率低:用户需要打开多个网站或APP,逐一查询。

  3. 无法组合计算:多食材时,需手动累加,易出错。

  4. 数据不统一:不同平台数据差异大。

  5. 缺乏个性化推荐:无法根据目标自动调整。

  6. 核心逻辑讲解

  7. 数据来源

    • 使用本地 JSON 文件存储食材营养数据(热量、蛋白质、碳水)。
    • 可扩展为从公开营养数据库 API 获取(如 USDA)。
  8. 查询逻辑

    • 输入食材名称 + 重量(克)
    • 查找对应食材的营养数据
    • 按重量比例计算实际摄入量
  9. 多食材组合

    • 支持循环输入多组食材
    • 累加总热量、蛋白质、碳水
  10. 输出结果

    • 单食材详情
    • 总营养汇总
    • 可选:与目标值对比
  11. 代码模块化设计

food_calorie_tool/ │ ├── data/ │ └── food_nutrition.json # 食材营养数据 ├── utils/ │ └── nutrition_calculator.py # 计算逻辑 ├── main.py # 主程序入口 ├── README.md # 项目说明 └── requirements.txt # 依赖

data/food_nutrition.json

[ {"name": "鸡胸肉", "calories_per_100g": 165, "protein_per_100g": 31, "carbs_per_100g": 0}, {"name": "米饭", "calories_per_100g": 130, "protein_per_100g": 2.4, "carbs_per_100g": 28}, {"name": "西兰花", "calories_per_100g": 34, "protein_per_100g": 2.8, "carbs_per_100g": 7} ]

utils/nutrition_calculator.py

import json

class NutritionCalculator: def init(self, data_file="data/food_nutrition.json"): with open(data_file, "r", encoding="utf-8") as f: self.food_data = {item["name"]: item for item in json.load(f)}

def calculate(self, name, weight_g):
    if name not in self.food_data:
        return None
    food = self.food_data[name]
    ratio = weight_g / 100.0
    return {
        "name": name,
        "weight_g": weight_g,
        "calories": round(food["calories_per_100g"] * ratio, 2),
        "protein": round(food["protein_per_100g"] * ratio, 2),
        "carbs": round(food["carbs_per_100g"] * ratio, 2)
    }

main.py

from utils.nutrition_calculator import NutritionCalculator

def main(): calc = NutritionCalculator() total = {"calories": 0, "protein": 0, "carbs": 0} items = []

print("=== 食材热量查询工具 ===")
while True:
    name = input("请输入食材名称(输入q退出):").strip()
    if name.lower() == "q":
        break
    try:
        weight = float(input("请输入重量(克):"))
    except ValueError:
        print("重量必须是数字!")
        continue

    result = calc.calculate(name, weight)
    if not result:
        print(f"未找到食材:{name}")
        continue

    items.append(result)
    total["calories"] += result["calories"]
    total["protein"] += result["protein"]
    total["carbs"] += result["carbs"]

    print(f"{name} ({weight}g) -> 热量: {result['calories']}kcal, 蛋白质: {result['protein']}g, 碳水: {result['carbs']}g")

print("\n=== 总计 ===")
print(f"总热量: {round(total['calories'], 2)}kcal")
print(f"总蛋白质: {round(total['protein'], 2)}g")
print(f"总碳水: {round(total['carbs'], 2)}g")

if name == "main": main()

  1. README.md

食材热量查询工具

一个基于 Python 的本地化食材营养查询工具,支持多食材组合计算,适合减脂期饮食控制。

功能

  • 单食材热量、蛋白质、碳水查询
  • 多食材组合计算
  • 本地 JSON 数据存储,可扩展为 API 数据源

安装

  1. 克隆仓库
  2. 安装依赖:pip install -r requirements.txt
  3. 运行:python main.py

使用

按提示输入食材名称和重量,输入 q 结束并查看总计。

数据格式

data/food_nutrition.json

  1. 使用说明

  2. 确保 Python 3.7+ 环境

  3. 运行 "python main.py"

  4. 输入食材名称(需在 JSON 中存在)

  5. 输入重量(克)

  6. 可连续输入多组食材

  7. 输入 "q" 查看总营养

  8. 核心知识点卡片

知识点 说明 JSON 数据存储 轻量级本地数据存储,便于维护和扩展 字典查找 O(1) 时间复杂度,提高查询效率 模块化设计 分离数据与逻辑,符合单一职责原则 比例计算 按 100g 基准计算任意重量的营养成分 循环输入 支持动态添加食材,实时累加 数据验证 检查输入合法性,避免运行时错误

  1. 总结

本项目结合了大数据与商务智能中的数据管理、查询优化、本地化分析思想,用 Python 实现了一个实用的减脂辅助工具。

通过模块化设计,代码易于维护和扩展,未来可集成:

  • 图形界面(Tkinter/PyQt)
  • Web 服务(Flask/FastAPI)
  • 机器学习推荐(根据目标自动配餐)
  • 云端数据同步

这个工具不仅解决了手动查表的痛点,还体现了数据驱动决策在个人健康管理中的应用。

如果你需要,还可以打包成可执行文件(.exe)或做成 Web 版本,方便非技术用户使用。

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