- 实际应用场景描述
在减脂或健身过程中,用户需要精确控制每日摄入的热量、蛋白质和碳水化合物。
目前市面上的营养查询工具往往:
- 只支持单一食材查询
- 无法批量计算多种食材组合
- 数据更新不及时
- 缺乏本地化食材库(如中式食材)
因此,我们开发一个本地化、可扩展、支持多食材组合的食材热量查询工具,帮助用户快速计算一餐或一天的营养摄入。
-
引入痛点
-
手动查表效率低:用户需要打开多个网站或APP,逐一查询。
-
无法组合计算:多食材时,需手动累加,易出错。
-
数据不统一:不同平台数据差异大。
-
缺乏个性化推荐:无法根据目标自动调整。
-
核心逻辑讲解
-
数据来源
- 使用本地 JSON 文件存储食材营养数据(热量、蛋白质、碳水)。
- 可扩展为从公开营养数据库 API 获取(如 USDA)。
-
查询逻辑
- 输入食材名称 + 重量(克)
- 查找对应食材的营养数据
- 按重量比例计算实际摄入量
-
多食材组合
- 支持循环输入多组食材
- 累加总热量、蛋白质、碳水
-
输出结果
- 单食材详情
- 总营养汇总
- 可选:与目标值对比
-
代码模块化设计
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()
- README.md
食材热量查询工具
一个基于 Python 的本地化食材营养查询工具,支持多食材组合计算,适合减脂期饮食控制。
功能
- 单食材热量、蛋白质、碳水查询
- 多食材组合计算
- 本地 JSON 数据存储,可扩展为 API 数据源
安装
- 克隆仓库
- 安装依赖:
pip install -r requirements.txt - 运行:
python main.py
使用
按提示输入食材名称和重量,输入 q 结束并查看总计。
数据格式
见 data/food_nutrition.json
-
使用说明
-
确保 Python 3.7+ 环境
-
运行 "python main.py"
-
输入食材名称(需在 JSON 中存在)
-
输入重量(克)
-
可连续输入多组食材
-
输入 "q" 查看总营养
-
核心知识点卡片
知识点 说明 JSON 数据存储 轻量级本地数据存储,便于维护和扩展 字典查找 O(1) 时间复杂度,提高查询效率 模块化设计 分离数据与逻辑,符合单一职责原则 比例计算 按 100g 基准计算任意重量的营养成分 循环输入 支持动态添加食材,实时累加 数据验证 检查输入合法性,避免运行时错误
- 总结
本项目结合了大数据与商务智能中的数据管理、查询优化、本地化分析思想,用 Python 实现了一个实用的减脂辅助工具。
通过模块化设计,代码易于维护和扩展,未来可集成:
- 图形界面(Tkinter/PyQt)
- Web 服务(Flask/FastAPI)
- 机器学习推荐(根据目标自动配餐)
- 云端数据同步
这个工具不仅解决了手动查表的痛点,还体现了数据驱动决策在个人健康管理中的应用。
如果你需要,还可以打包成可执行文件(.exe)或做成 Web 版本,方便非技术用户使用。
利用AI高效解决实际问题,如果你觉得这个工具好用,欢迎关注长安牧笛!