增肌期晚餐调整
健身爱好者小王晚上练完,想吃够40g蛋白质又怕脂肪超标。他打开冰箱:一盒150g鸡胸肉(蛋白33g、脂肪3.6g)、一盒200g北豆腐(蛋白16g、脂肪7g)。本工具帮他一算:鸡胸肉蛋白高脂肪低,豆腐蛋白凑不够缺口却多出3.4g脂肪。他决定只吃鸡胸肉,再加100g西兰花补纤维,晚餐总蛋白达标、脂肪控制在5g以内。
冰箱里剩的半颗西兰花,手机扫码查到的营养数据跟包装背面印的差了一倍——问题出在“可食部”没扣掉。输入食物名称和克重,它从《中国食物成分表》标准版里调出对应的蛋白、脂肪、碳水、维生素数值,并自动折算熟重与生重的差异。数据来自后端缓存的权威库,不存用户查询记录,查完即弃。
健身爱好者小王晚上练完,想吃够40g蛋白质又怕脂肪超标。他打开冰箱:一盒150g鸡胸肉(蛋白33g、脂肪3.6g)、一盒200g北豆腐(蛋白16g、脂肪7g)。本工具帮他一算:鸡胸肉蛋白高脂肪低,豆腐蛋白凑不够缺口却多出3.4g脂肪。他决定只吃鸡胸肉,再加100g西兰花补纤维,晚餐总蛋白达标、脂肪控制在5g以内。
妊娠期糖耐量异常的孕妈李女士,早餐只能吃30g碳水。她看着两个选项发愁:一根中等香蕉(碳水24g)加半杯无糖酸奶(碳水6g)刚好30g,但换成两片全麦面包(每片15g碳水)加一个水煮蛋(碳水0.6g)就超了。本工具帮她确认:香蕉+酸奶方案碳水正好,且含膳食纤维3g,血糖上升更平缓。
上班族小刘中午点了一份黄焖鸡米饭外卖,想知道这一顿的脂肪和碳水是否超标。他用本工具查:一份带皮鸡腿肉(200g)含脂肪22g、碳水0g,一碗米饭(200g)含碳水52g。他算了下:仅这顿脂肪就占全天推荐量的37%,碳水占23%。他决定只吃半碗饭,把鸡皮去掉再吃,实际脂肪降到12g。
备孕半年的张女士每天吃400μg叶酸片,但不确定饮食中是否足够。她用本工具查了常吃的菠菜(每100g含叶酸194μg)、猪肝(每100g含叶酸425μg),发现如果每周吃两次猪肝(每次50g),加上一把菠菜(150g),仅食物就能获得约800μg叶酸,加上补充剂已接近上限。她据此调整了补充剂剂量。
痛风患者老赵血尿酸520μmol/L,医生要求严格限制嘌呤。他查本工具:每100g香菇含嘌呤214mg,比猪肉(138mg)还高;芦笋(嘌呤23mg)和西兰花(嘌呤20mg)则安全。他据此把晚餐的香菇炒肉片换成芦笋炒蛋,并控制猪瘦肉在50g以内,餐后无关节不适。
| 维度 | 本工具 | 竞品 A(MyFitnessPal) | 传统方法(查书/计算器) |
|---|---|---|---|
| 数据覆盖 | 蛋白/脂肪/碳水/维生素及常见食物 | 含微量元素、品牌食品、餐厅菜谱 | 依赖手册收录范围,维生素常缺失 |
| 输入方式 | 直接搜索食物名称 | 扫码/搜索/语音输入 | 手动翻书或心算 |
| 结果速度 | 秒出结果 | 需加载数据库或联网查询 | 分钟级(翻书+计算) |
| 离线可用 | 完全离线,不依赖网络 | 需联网,离线功能有限 | 完全离线(有书即可) |
| 更新频率 | 静态数据库,定期更新 | 实时更新(用户提交+官方) | 依赖手册版本,更新周期长 |
| 输入 | 输出 | 说明 |
|---|---|---|
| 100克 鸡胸肉(生) | 蛋白质 31.0g | 脂肪 3.6g | 碳水 0g | 维生素A 0μg | 维生素B3 13.2mg | 维生素E 0.3mg | 常规:高蛋白低脂食物,验证蛋白质含量在常见食材中的典型值,以及维生素B3(烟酸)的检出 |
| 200克 熟米饭 | 蛋白质 5.2g | 脂肪 0.6g | 碳水 56.0g | 维生素B1 0.04mg | 维生素B2 0.02mg | 维生素E 0.1mg | 常规:主食类典型输入,验证碳水含量在常见份量下的数值,同时测试「熟」与「生」的换算逻辑 |
| 1个 中等大小 苹果(带皮) | 蛋白质 0.3g | 脂肪 0.2g | 碳水 25.0g | 维生素C 8.4mg | 维生素A 54μg | 维生素E 0.2mg | 常规:水果类按「个」输入,验证工具能否处理非重量单位并自动换算为可食部分重量 |
| 0克 西兰花 | 蛋白质 0g | 脂肪 0g | 碳水 0g | 所有维生素 0μg/mg | 边界:零重量输入,验证工具不会报错或返回空,而是正确返回全零数值 |
| 5000克 菠菜 | 蛋白质 145.0g | 脂肪 10.0g | 碳水 180.0g | 维生素A 23400μg | 维生素C 1400mg | 维生素K 24000μg | 边界:超大份量(5kg),验证数值能否正确放大且不溢出,同时暴露维生素A/K在超大剂量下的数值量级 |
| 1个 鸡蛋(带壳,未指定大小) | 无法确定:请指定鸡蛋大小(小号/中号/大号/特大号),或输入具体重量 | 易错:鸡蛋大小差异导致营养值偏差大(小号约40g vs 特大号约70g),工具需提示用户明确规格 |
| 100克 猪肝(卤制) | 蛋白质 26.0g | 脂肪 4.5g | 碳水 5.0g | 维生素A 6500μg | 维生素B12 26μg | 维生素C 2mg | 易错:卤制加工品与生鲜的维生素A/B12含量差异大,验证工具是否区分「卤制」与「生」的版本 |
| 100克 牛油果 | 蛋白质 2.0g | 脂肪 15.0g | 碳水 9.0g | 维生素K 21μg | 维生素B6 0.3mg | 维生素C 10mg | 易错:牛油果常被误认为「水果=低脂」,实际脂肪含量高,验证工具能正确呈现高脂水果的脂肪数值 |
1.把「每100克」数据当作「每份」直接使用
输入「鸡胸肉 200克」,看到蛋白 31g 就认为整块肉含 31g 蛋白先确认数据单位:每100克含蛋白 31g,200克应乘以 2,得 62g 蛋白国内营养标签和多数数据库均以「每100克」为基准,忽略单位换算会导致实际摄入量翻倍或减半。
2.生熟状态混淆,用生重数据算熟食
煮熟的米饭 150g,直接查「大米」营养表,按生米碳水 77g/100g 算查「熟米饭」条目,或按生米:熟米 ≈ 1:2.3 折算:熟饭 150g ≈ 生米 65g,再算碳水烹饪吸水/失水会大幅改变重量,生熟数据不可混用,否则碳水误差可达 40% 以上。
3.忽略「可食部」比例,把带骨带皮重量全算进去
称了 300g 带骨鸡腿,直接按鸡腿肉营养数据算蛋白先扣除骨头重量(鸡腿可食部约 70%),实际肉重 210g,再用肉数据计算带骨/带壳/带皮食材的不可食部分占 10%-50%,不扣除会导致蛋白/脂肪估算严重偏高。
4.用「干重」数据算「泡发后」的食材
干木耳 20g,查表碳水 65g/100g,算出碳水 13g查「水发木耳」数据(碳水约 3.5g/100g),或按泡发率 1:10 折算:20g 干木耳 ≈ 200g 水发木耳,碳水约 7g干货泡发后重量增 5-15 倍,营养素浓度被稀释,直接用干重数据会使碳水/蛋白等数值虚高数倍。
5.维生素单位混淆:mg 与 μg 不区分
查菠菜维生素A,看到 469 直接当作 469mg 记录确认单位是 μg RAE(微克视黄醇活性当量),469μg = 0.469mg,记录时注明单位维生素A、D、B12 等常用 μg 表示,与 mg 差 1000 倍。错把 μg 当 mg 会导致摄入量虚高 1000 倍。
6.忽略「营养素参考值%」的每日基准
看到某食物钠 NRV% 为 30%,认为一顿饭摄入钠只占全天 30%确认 NRV% 是按「每100克」计算,且基准为 2000kcal 膳食。若实际摄入 200g,钠占比应为 60%NRV% 基于特定能量基准(通常 2000kcal),且以 100g 为单位。直接看数字而不换算实际摄入量,会低估高钠/高脂风险。
7.把「可溶性膳食纤维」和「总膳食纤维」混用
查燕麦,看到可溶性纤维 4g,就当作总纤维 4g 记录总膳食纤维 = 可溶性 + 不可溶性。燕麦总纤维约 10g/100g,其中可溶性约 4g,不可溶性约 6g可溶性纤维(降血糖)与不可溶性(促排便)功能不同,且总纤维是两者之和。只记一项会导致纤维摄入量低估一半以上。
能量(kcal) = 蛋白质(g)×4 + 脂肪(g)×9 + 碳水化合物(g)×4
蛋白质克,每克提供 4 kcal 能量脂肪克,每克提供 9 kcal 能量碳水化合物克,每克提供 4 kcal 能量100 g 熟鸡胸肉含蛋白质 31 g、脂肪 3.6 g、碳水 0 g:能量 = 31×4 + 3.6×9 + 0×4 = 124 + 32.4 = 156.4 kcal。
5 种主流语言实现,复制即用:
import json
from typing import Dict, List
# 模拟食物营养数据(每100g)
FOOD_DB: Dict[str, Dict[str, float]] = {
"鸡胸肉": {"蛋白": 31.0, "脂肪": 3.6, "碳水": 0.0, "维生素A": 0.0, "维生素C": 0.0},
"鸡蛋": {"蛋白": 13.0, "脂肪": 9.0, "碳水": 1.5, "维生素A": 160.0, "维生素C": 0.0},
"苹果": {"蛋白": 0.3, "脂肪": 0.2, "碳水": 14.0, "维生素A": 3.0, "维生素C": 4.0},
}
def query_nutrition(food_name: str) -> Dict[str, float]:
"""查询食物营养表,返回每100g的营养成分"""
food = FOOD_DB.get(food_name)
if not food:
return {"error": f"未找到食物 '{food_name}'"}
return food
# 示例
print(json.dumps(query_nutrition("苹果"), ensure_ascii=False, indent=2))
# {
# "蛋白": 0.3,
# "脂肪": 0.2,
# "碳水": 14.0,
# "维生素A": 3.0,
# "维生素C": 4.0
# }// 模拟食物营养数据(每100g)
const FOOD_DB = {
"鸡胸肉": { "蛋白": 31.0, "脂肪": 3.6, "碳水": 0.0, "维生素A": 0.0, "维生素C": 0.0 },
"鸡蛋": { "蛋白": 13.0, "脂肪": 9.0, "碳水": 1.5, "维生素A": 160.0, "维生素C": 0.0 },
"苹果": { "蛋白": 0.3, "脂肪": 0.2, "碳水": 14.0, "维生素A": 3.0, "维生素C": 4.0 },
};
function queryNutrition(foodName) {
const food = FOOD_DB[foodName];
if (!food) return { error: `未找到食物 '${foodName}'` };
return food;
}
// 示例
console.log(JSON.stringify(queryNutrition("苹果"), null, 2));
// {
// "蛋白": 0.3,
// "脂肪": 0.2,
// "碳水": 14.0,
// "维生素A": 3.0,
// "维生素C": 4.0
// }package main
import (
"encoding/json"
"fmt"
)
// 每100g营养结构
type Nutrition struct {
Protein float64 `json:"蛋白"`
Fat float64 `json:"脂肪"`
Carbs float64 `json:"碳水"`
VitaminA float64 `json:"维生素A"`
VitaminC float64 `json:"维生素C"`
}
var foodDB = map[string]Nutrition{
"鸡胸肉": {31.0, 3.6, 0.0, 0.0, 0.0},
"鸡蛋": {13.0, 9.0, 1.5, 160.0, 0.0},
"苹果": {0.3, 0.2, 14.0, 3.0, 4.0},
}
func queryNutrition(name string) (Nutrition, error) {
n, ok := foodDB[name]
if !ok {
return Nutrition{}, fmt.Errorf("未找到食物 '%s'", name)
}
return n, nil
}
func main() {
n, err := queryNutrition("苹果")
if err != nil {
fmt.Println(err)
return
}
b, _ := json.MarshalIndent(n, "", " ")
fmt.Println(string(b))
// {
// "蛋白": 0.3,
// "脂肪": 0.2,
// "碳水": 14.0,
// "维生素A": 3.0,
// "维生素C": 4.0
// }
}#!/usr/bin/env bash
# 模拟食物营养查询(每100g)
# 使用关联数组(Bash 4+)
declare -A FOOD_DB
FOOD_DB["鸡胸肉,蛋白"]=31.0
FOOD_DB["鸡胸肉,脂肪"]=3.6
FOOD_DB["鸡胸肉,碳水"]=0.0
FOOD_DB["苹果,蛋白"]=0.3
FOOD_DB["苹果,脂肪"]=0.2
FOOD_DB["苹果,碳水"]=14.0
FOOD_DB["苹果,维生素A"]=3.0
FOOD_DB["苹果,维生素C"]=4.0
query_nutrition() {
local food=$1
local keys=("蛋白" "脂肪" "碳水" "维生素A" "维生素C")
echo "{"
for key in "${keys[@]}"; do
val=${FOOD_DB["${food},${key}"]}
if [[ -z "$val" ]]; then
echo " \"error\": \"未找到食物 '${food}'\""
echo "}"
return
fi
echo " \"${key}\": ${val},"
done
echo "}"
}
query_nutrition "苹果"
# {
# "蛋白": 0.3,
# "脂肪": 0.2,
# "碳水": 14.0,
# "维生素A": 3.0,
# "维生素C": 4.0,
# }interface Nutrition {
蛋白: number;
脂肪: number;
碳水: number;
维生素A: number;
维生素C: number;
}
const FOOD_DB: Record<string, Nutrition> = {
"鸡胸肉": { 蛋白: 31.0, 脂肪: 3.6, 碳水: 0.0, 维生素A: 0.0, 维生素C: 0.0 },
"鸡蛋": { 蛋白: 13.0, 脂肪: 9.0, 碳水: 1.5, 维生素A: 160.0, 维生素C: 0.0 },
"苹果": { 蛋白: 0.3, 脂肪: 0.2, 碳水: 14.0, 维生素A: 3.0, 维生素C: 4.0 },
};
function queryNutrition(foodName: string): Nutrition | { error: string } {
const food = FOOD_DB[foodName];
if (!food) return { error: `未找到食物 '${foodName}'` };
return food;
}
// 示例
console.log(JSON.stringify(queryNutrition("苹果"), null, 2));
// {
// "蛋白": 0.3,
// "脂肪": 0.2,
// "碳水": 14.0,
// "维生素A": 3.0,
// "维生素C": 4.0
// }可以。本工具收录了常见食物的蛋白、脂肪、碳水、维生素A、B族、C、D、E、K等主要维生素指标。以鸡蛋(煮全蛋)为例,数据包含维生素D约1.1微克/100克,同时标注了维生素A、B2、B12等。输入“鸡蛋”或“煮鸡蛋”即可看到完整营养表。如果某食物维生素D数据缺失,说明该食物本身含量极低或未收录,建议换用更具体的食材名称重试。
本工具的数据源按“每100克可食部”标注,如果某营养成分含量极低(低于0.1克)或未检出,该字段会留空,不显示“0”或“-”,避免干扰判断。猪肝的脂肪含量确实很低(约3.5克/100克),不会为空;如果为空,可能是输入了“猪肝(生)”以外的别名,比如“猪肝片”或“猪肝(熟)”——建议直接输入“猪肝”或“猪肝(生)”获取最完整数据。
不同来源的数据差异常见原因有:1. 部位差异——鸡胸肉分“去皮”和“带皮”,去皮生胸肉约23克/100克,带皮约20克;2. 烹饪方式——生肉含水高,熟肉脱水后蛋白质占比会上升;3. 数据库版本——本工具引用的是中国食物成分表(标准版),部分健身App引用美国USDA数据库,两者对同一食材的采样批次和检测方法不同。建议统一参照一个数据库做对比,并确认是生重还是熟重。
本工具标注的维生素A(μg RAE)统一按视黄醇活性当量计算,已包含来自β-胡萝卜素的转化部分。具体来说:如果食物含β-胡萝卜素,工具会自动将其按12:1换算为视黄醇当量再加总。例如胡萝卜的维生素A值约835μg RAE,其中大部分来自β-胡萝卜素。如果只想看纯视黄醇(动物来源),建议查看“维生素A(视黄醇)”单独列——不是所有食物都有此列,只有动物肝脏、蛋奶等才显示。
西兰花的6.6克碳水是“总碳水”,包含膳食纤维(约2.6克)。生酮饮食通常看“净碳水”(总碳水-膳食纤维),所以净碳水约4克/100克,属于低碳水蔬菜,生酮期可以正常吃。本工具目前只显示总碳水,不自动计算净碳水,建议自己减去膳食纤维列的数据。如果你在严格生酮(每天<20克净碳水),100克西兰花约占用20%的额度,注意搭配其他食材时控制总量。
不是遗漏,是米饭(精白米)本身维生素C含量极低(约0毫克/100克),本工具对未检出或低于检测限的营养素统一不显示,避免显示“0”造成误解。如果你需要维生素C,建议查新鲜蔬菜水果,比如青椒(约80毫克)、猕猴桃(约92毫克)。本工具对每种食物只显示实际可测出的营养素,空白列不代表工具数据不全,而是该食物在该项上不值得参考。
本工具专注展示三大宏量营养素和维生素明细,不直接显示热量。但可以根据结果自行估算:每克蛋白质和碳水约4千卡,每克脂肪约9千卡。以100克熟米饭为例,碳水约25.9克、蛋白质约2.6克、脂肪约0.3克,估算热量约为25.9×4 + 2.6×4 + 0.3×9 ≈ 116千卡。如果非要精确热量,建议使用专门的卡路里计算器,本工具更适合查看具体营养素构成而非总热量。
本工具默认按最通用的食材部位收录,输入“牛肉”会返回最常见部位(如牛腱子或牛里脊)的数据。不同部位脂肪和蛋白质差异很大:牛腩脂肪约20克/100克,牛里脊约5克。建议输入更精确的名称,比如“牛腩”“牛里脊”“牛腿肉”,工具会返回对应部位的数据。如果某部位未收录,可参考相近部位数值并手动调整脂肪比例。
隐私保证所有计算与处理均在你的浏览器本地完成,输入数据不会上传服务器,也不会保存或共享。