我正在尝试编写一个计算食物营养水平的程序。假设我有这个数据(可能不正确)
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/