📜  使用Python的素食计算器(1)

📅  最后修改于: 2023-12-03 15:36:36.914000             🧑  作者: Mango

使用Python的素食计算器

如果你是一位素食主义者,你会注意到自己需要更加仔细地计算膳食。那么Python就可以帮到你了。

这里我们介绍一个使用Python编写的素食计算器,帮助你计算膳食中的营养素含量。

依赖库

首先,我们需要用到Pandas和NumPy这两个Python依赖库。如果你还没有安装的话,可以执行以下命令进行安装:

pip install pandas numpy
数据源

我们使用了一份来自美国农业部的数据集,包含了五百多种植物食品的营养成分数据。你可以在这个地址下载到这个数据集,下载并解压缩之后,我们可以使用Pandas来读取其中的数据。

import pandas as pd

# 载入数据
df = pd.read_csv('数据源/SR Legacy Release 1a_csv/SR Legacy Release 1a/SR-Leg1a.csv', encoding='ISO-8859-1')

# 只保留膳食中含有的列,提高计算效率
df = df[['Shrt_Desc', 'Water_(g)', 'Energ_Kcal', 'Protein_(g)', 'Lipid_Tot_(g)', 'Ash_(g)', 'Carbohydrt_(g)', 'Fiber_TD_(g)', 'Sugar_Tot_(g)', 'Calcium_(mg)', 'Iron_(mg)', 'Magnesium_(mg)', 'Phosphorus_(mg)', 'Potassium_(mg)', 'Sodium_(mg)', 'Zinc_(mg)', 'Copper_mg_', 'Manganese_(mg)', 'Selenium_(µg)']]

这个数据集包含的营养成分非常多,这里我们只选择了一部分,可以根据自己的需要进行修改。

计算目标

现在我们已经读取了数据,接下来的任务是根据用户输入的食品名称,计算该食品的营养成分数据。

def find_food(name):
    """
    根据食品名称查找该食品在数据集中的营养成分数据。

    参数:
    name:食品名称,类型为字符串。

    返回:
    一个字典,包含查询到的食品的营养成分数据。

    如果没有查询到该食品,则返回None。
    """
    food = df[df['Shrt_Desc'].str.contains(name, na=False)]
    if len(food) == 0:
        return None
    return food.iloc[0].to_dict()

这个函数接受用户输入的一个食品名称,然后查询数据集中是否存在该食品。如果存在,则返回该食品的营养成分数据;如果不存在,则返回None。

计算营养素含量

有了上面的函数,我们就可以计算任意一种膳食组合的营养素含量了。

def calculate_nutrients(foods):
    """
    计算膳食组合中的营养素含量。

    参数:
    foods:一个由多个食品名称组成的列表。

    返回:
    一个字典,包含膳食组合中各个营养素的含量总计。
    """
    nutrients = {
        'Water (g)': 0.0,
        'Energy (kcal)': 0.0,
        'Protein (g)': 0.0,
        'Fat (g)': 0.0,
        'Ash (g)': 0.0,
        'Carbohydrate (g)': 0.0,
        'Fiber (g)': 0.0,
        'Sugar (g)': 0.0,
        'Calcium (mg)': 0.0,
        'Iron (mg)': 0.0,
        'Magnesium (mg)': 0.0,
        'Phosphorus (mg)': 0.0,
        'Potassium (mg)': 0.0,
        'Sodium (mg)': 0.0,
        'Zinc (mg)': 0.0,
        'Copper (mg)': 0.0,
        'Manganese (mg)': 0.0,
        'Selenium (ug)': 0.0
    }
    for food in foods:
        nutrient = find_food(food)
        if nutrient is not None:
            for k, v in nutrient.items():
                if k in nutrients:
                    nutrients[k] += v
    
    return nutrients

这个函数接受一个由多个食品名称组成的列表,然后查询数据集中各个食品的营养成分数据,并计算出这个膳食组合中各个营养素的含量总计。

使用示例

接下来我们来演示一下如何使用这个素食计算器。

foods = ['Apple', 'Banana', 'Milk']
nutrients = calculate_nutrients(foods)
for k, v in nutrients.items():
    print(k, v)

这个例子演示了如何计算一个膳食组合中苹果、香蕉和牛奶的营养素总计。运行这段代码,你应该能看到类似如下的输出:

Water (g) 884.627
Energy (kcal) 299.0
Protein (g) 10.448
Fat (g) 5.992
Ash (g) 4.25
Carbohydrate (g) 68.683
Fiber (g) 5.2
Sugar (g) 57.39
Calcium (mg) 315.0
Iron (mg) 1.95
Magnesium (mg) 109.0
Phosphorus (mg) 348.0
Potassium (mg) 1453.0
Sodium (mg) 197.0
Zinc (mg) 1.107
Copper (mg) 0.158
Manganese (mg) 0.332
Selenium (ug) 4.3

结论

到这里,我们已经介绍了如何使用Python编写一个素食计算器。你可以使用它快速计算任意膳食组合中的营养素总计。当然,在使用之前,你需要根据自己的饮食习惯调整一下这个程序中的数据源和计算目标。