python - 不同的单位和数据结构的设计

标签 python data-structures units-of-measurement

我正在尝试编写一个计算食物营养水平的程序。假设我有这个数据(可能不正确)

10 grams of bread has 68 mg sodium.
1 medium slice is 50 grams.

1 cup of milk has 98 mg sodium
1 cup of milk is 236 ml(or 244 grams)
which means 10 grams of milk has 0.004 grams of Sodium

用户可以输入他吃的面包片数或克数,或者如果是牛奶 - 他喝了多少杯或多少毫升牛奶

那么,数据结构应该如何设计呢?我应该在内部保留一个单位测量单位(例如克)并将切片、毫升、杯子等转换为该单位吗?

    food details ={ 
     'whitebread':{'unit':10,'slice':50,'sodium':0.068},
     'milk':{'unit':10,'cup':244,'sodium':0.004},...
     }

最佳答案

当然,您应该在内部转换为单个测量单位,并在输入和输出时进行转换。

它在 python 中比在其他中更重要,因为它是 dynamically typed - 您不能显式声明函数使用或返回什么类型。考虑一个例子:

def get_sodium_for_bread(quantity_of_bread):
    ...
    return quantity_of_sodium

您无法像 C 中那样显式定义 quantity_... 变量的类型(miligrams_t get_sodium(slices_t bread))。如果您使用不同的单位,您很快就会迷路。

如果可能的话,如果你对所有事情都使用一个单位,那将是最简单的,例如克

food_props_per_gram = {
    'bread': {'sodum': 0.000012},
    'milk': {'sodium': 0.00032}
}

units_to_grams = {
    'slice': 100.0,
    'cup': '250.0'
}

关于python - 不同的单位和数据结构的设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16602210/

相关文章:

algorithm - 关于向量数据结构设计的问题?

facebook - Facebook 如何管理数据库中的用户配置文件?

algorithm - 寻找数据结构顺序的困惑

java - Java 中的计量单位 API?

python - Python中的单位转换

python - 如何在 Pandas 数据帧上应用具有模式的 bool 过滤器?

python - Pandas Read_Excel 日期时间转换器

python - 产生扩展语法和发送方法

python - 使用 Python 托管身份创建 Azure 数据工厂链接服务

java - 打印 JScience 中所有定义的单位