news 2026/4/15 20:15:22

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

作者头像

张小明

前端开发工程师

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/10 9:55:45

Windows文件修复失败?快马平台帮你搞定

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 创建一个Windows文件修复工具,支持检测和修复常见系统文件损坏问题。工具应包含以下功能:1. 扫描系统文件并标记损坏文件;2. 提供联机修复选项&…

作者头像 李华
网站建设 2026/4/10 0:25:00

Canvas编辑器实战:从零构建交互式数据可视化工具

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 开发一个专业级数据可视化Canvas编辑器,功能包括:1. 支持常见图表类型(柱状图、折线图、饼图)的绘制和编辑 2. 数据绑定接口(支持JSON/CSV导入) 3. 交互功能…

作者头像 李华
网站建设 2026/4/3 6:31:30

用DECODE快速实现数据转换原型:3步搞定复杂逻辑

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 创建一个ORACLE DECODE原型设计工具,功能包括:1) 可视化条件-结果映射表;2) 实时SQL生成;3) 样例数据测试;4) 结果验证。…

作者头像 李华
网站建设 2026/4/3 22:04:27

手把手教你用双卡4090D部署GPT-OSS-20B,避坑指南来了

手把手教你用双卡4090D部署GPT-OSS-20B,避坑指南来了 你是不是也遇到过这些情况:想本地跑一个真正好用的大模型,结果显存不够、部署报错、网页打不开、推理慢得像在等咖啡凉?网上搜教程,不是缺显存提示,就…

作者头像 李华
网站建设 2026/4/12 18:03:00

语音中藏了多少信息?用SenseVoiceSmall挖出来

语音中藏了多少信息?用SenseVoiceSmall挖出来 你有没有试过听一段录音,突然意识到:原来声音里藏着这么多“话外之音”? 不是只有文字在表达意思——语气的上扬、停顿的长短、笑声的频率、背景里隐约的掌声……这些看似琐碎的细节…

作者头像 李华
网站建设 2026/4/10 2:06:17

前端新手必看:轻松搞定PLAY() FAILED错误

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 创建一个分步教学demo,解释为什么浏览器会阻止自动播放。包含:1) 基础播放示例(会报错) 2) 添加用户交互检测 3) 静音自动播放方案 4) 优雅降级处理。每个步…

作者头像 李华