news 2026/4/23 13:06:35

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
开发食材热量查询工具,输入食材名称,重量,查询热量,蛋白质,碳水含量,支持多食材组合计算,辅助减肥期饮食控制。

1. 实际应用场景描述

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

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

- 只支持单一食材查询

- 无法批量计算多种食材组合

- 数据更新不及时

- 缺乏本地化食材库(如中式食材)

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

2. 引入痛点

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

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

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

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

3. 核心逻辑讲解

1. 数据来源

- 使用本地 JSON 文件存储食材营养数据(热量、蛋白质、碳水)。

- 可扩展为从公开营养数据库 API 获取(如 USDA)。

2. 查询逻辑

- 输入食材名称 + 重量(克)

- 查找对应食材的营养数据

- 按重量比例计算实际摄入量

3. 多食材组合

- 支持循环输入多组食材

- 累加总热量、蛋白质、碳水

4. 输出结果

- 单食材详情

- 总营养汇总

- 可选:与目标值对比

4. 代码模块化设计

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()

5. README.md

# 食材热量查询工具

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

## 功能

- 单食材热量、蛋白质、碳水查询

- 多食材组合计算

- 本地 JSON 数据存储,可扩展为 API 数据源

## 安装

1. 克隆仓库

2. 安装依赖:`pip install -r requirements.txt`

3. 运行:`python main.py`

## 使用

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

## 数据格式

见 `data/food_nutrition.json`

6. 使用说明

1. 确保 Python 3.7+ 环境

2. 运行

"python main.py"

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

4. 输入重量(克)

5. 可连续输入多组食材

6. 输入

"q" 查看总营养

7. 核心知识点卡片

知识点 说明

JSON 数据存储 轻量级本地数据存储,便于维护和扩展

字典查找 O(1) 时间复杂度,提高查询效率

模块化设计 分离数据与逻辑,符合单一职责原则

比例计算 按 100g 基准计算任意重量的营养成分

循环输入 支持动态添加食材,实时累加

数据验证 检查输入合法性,避免运行时错误

8. 总结

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

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

- 图形界面(Tkinter/PyQt)

- Web 服务(Flask/FastAPI)

- 机器学习推荐(根据目标自动配餐)

- 云端数据同步

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

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

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 10:48:44

零基础入门:Flutter SDK下载安装图文指南

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 生成一个交互式Flutter SDK安装教程,包含:1) 分步骤图文指导;2) 常见问题解答;3) 环境检测工具;4) 第一个Flutter应用示…

作者头像 李华
网站建设 2026/4/23 10:48:29

零基础入门:5分钟看懂MOS管符号的秘密

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 创建一个交互式MOS管符号学习模块:1) 动态展示N-MOS/P-MOS符号演变过程(从三极管到现代符号)2) 点击符号各部位显示详细说明(如箭头…

作者头像 李华
网站建设 2026/4/23 12:23:50

WPS VBA零基础入门:从安装到第一个宏

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 创建一个面向WPS VBA初学者的教学项目。内容包括:1. 详细的环境配置指南;2. 宏录制器使用教程;3. 第一个Hello World宏;4. 基本语法…

作者头像 李华
网站建设 2026/4/23 12:22:31

对比评测:传统vs现代金士顿U盘量产工具效率差异

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 开发一个金士顿U盘量产效率对比工具,能够:1.记录传统手动操作时间;2.测试自动化工具处理速度;3.统计成功率数据;4.生成可…

作者头像 李华
网站建设 2026/4/23 10:50:01

3DGS原型开发:48小时从创意到可演示模型

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 创建一个快速原型开发环境,功能包括:1. 草图转3D模型 2. 多方案自动生成 3. 物理属性模拟 4. 协同标注系统 5. 版本对比工具。要求整合3DGS核心算法&#x…

作者头像 李华