news 2026/2/16 1:09:43

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

作者头像

张小明

前端开发工程师

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/2/12 3:13:19

ComfyUI-WanVideoWrapper深度评测:从入门到架构师的实践指南

ComfyUI-WanVideoWrapper深度评测:从入门到架构师的实践指南 【免费下载链接】ComfyUI-WanVideoWrapper 项目地址: https://gitcode.com/GitHub_Trending/co/ComfyUI-WanVideoWrapper 3分钟快速评估:你是否需要ComfyUI-WanVideoWrapper&#xff…

作者头像 李华
网站建设 2026/2/11 23:01:23

React Hooks零基础入门:5分钟学会第一个Hook

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 创建一个面向初学者的React Hooks教学示例,要求:1. 从最简单的计数器示例开始介绍useState 2. 逐步添加useEffect展示副作用处理 3. 每个示例都有分步解释 …

作者头像 李华
网站建设 2026/2/14 17:08:54

基于高频变压器的隔离式推挽栅极驱动电路

电路工作原理 这是一个基于高频变压器的隔离式推挽栅极驱动电路,核心作用是在电气隔离的前提下,为上下桥臂的功率 MOS 管提供高速、可靠的驱动信号。 输入侧工作逻辑 电源 IC 输出的 PWM 信号,通过电阻 R1 和电容 C1 组成的串联电路,送入变压器原边。 R1 的作用是抑制 PCB…

作者头像 李华
网站建设 2026/2/12 3:44:54

JAVA面试必问:10个实际项目中的基础问题解析

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 开发一个JAVA基础面试题实战解析应用,功能包括:1. 展示10个来自真实项目的JAVA基础面试题;2. 每个问题附带项目背景说明;3. 提供详细…

作者头像 李华
网站建设 2026/2/13 18:49:06

AI帮你记住所有GIT命令:告别手动查询的烦恼

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 开发一个AI辅助的GIT命令提示工具,能够根据用户输入的自然语言描述(如我想提交代码到远程仓库)自动生成对应的GIT命令(如git commit…

作者头像 李华
网站建设 2026/2/7 8:56:33

墙面裂缝脏污剥落检测数据集VOC+YOLO格式114张3类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件)图片数量(jpg文件个数):114标注数量(xml文件个数):114标注数量(txt文件个数):114标注类别数&…

作者头像 李华