0

我是 python 新手,所以我试图通过制作一个简单的宏量营养素计算器来练习。我不太确定如何将某些值传递给不同的函数。

这是我的代码

def Macro_input():
    Percent_protein = input("Percentage of Protein: ") 
    float(Percent_protein)
    Percent_carb = input("Percentage of Carbohydrates: ")
    float(Percent_carb)
    Percent_fat = input("Percentage of Fats: ")
    float(Percent_fat)
    Macro_dict = {'Protein': Percent_protein, 'Carbohydrate': Percent_carb, 'Fats': Percent_fat}
    Macro_sum = Percent_protein + Percent_carb + Percent_fat
    return Macro_sum 

def Total_macro_check(Macro_sum):

    #perhaps put all input into a dictionary? Macro['Protein':num, 'Carb':num, 'Fat':num]

    if Macro_sum == 100:
        print "You macronutrients percentages are \n Protein: "#, Macro_dict['Protein'], "%"    #list for P/C/F --> %d
    elif Macro_sum < 100:
        print "Total percentages do not add up to 100. Please reenter percentages."
    #go back to function that asks for Macros
    elif Macro_sum > 100:
        print "Total percentages surpass 100. Please reenter percentages."
    #go back to function that asks for Macros

def main():
    print "Please enter your macro-nutrients"
    Total_macro_value = Macro_input()

    Total_macro_check(Total_macro_value)

if __name__ == "__main__":
    main()

我想要做的是输出一个字典(Macro_dict),所以如果所有宏( )
的总和是100,我可以打印出来。 但我也想检查是否等于100。 这意味着我必须输出一个值到功能。 Macro_sum
Macro_sum
Macro_sumTotal_macro_check

但是我觉得好像我的Macro_input函数返回了Macro_sum, 我不能使用它的输出,Macro_dict因为它返回多个值,而只接受 1 个值。
Total_macro_checkTotal_macro_check

4

3 回答 3

4

您的功能 Macro_Input 是忌。我认为这条线的行为不像你想象的那样。

float(Percent_protein)

这是将 Percent_protein 转换为浮动是,但它没有将该值分配给任何东西。

你的功能应该是。

def Macro_input():
    Percent_protein = float(input("Percentage of Protein: "))
    Percent_carb = float(input("Percentage of Carbohydrates: "))
    Percent_fat = float(input("Percentage of Fats: "))
    Macro_dict = {'Protein': Percent_protein, 'Carbohydrate': Percent_carb, 'Fats': Percent_fat}
    Macro_sum = Percent_protein + Percent_carb + Percent_fat
    return (Macro_dict,Macro_sum)

现在它将根据需要返回字典和总和。你可以把它们弄出来。

(dict,sum) = Macro_input()
于 2013-02-27T10:55:17.217 回答
2

修改Macro_input()以返回Macro_dict和的元组Macro_sum

def Macro_input():
    # your code
    return Macro_sum, Macro_dict

然后你在你的主函数中你可以将返回的元组解压缩成两个变量,如下所示:

def main():
    print "Please enter your macro-nutrients"
    Total_macro_value, Macro_dict = Macro_input()

    Total_macro_check(Total_macro_value)
于 2013-02-27T10:53:06.573 回答
1

创建一个包含值和辅助函数的类:

class MacroInput(object):
    def __init__(self, protein, carb, fat):
        self.protein, self.carb, self.fat = protein, carb, fat

    def sum(self):
        return self.protein + self.carb + self.fat

您可以在其中创建一个实例,Macro_input()然后传递该实例。def Total_macro_check(Macro_sum)然后会变成:

def Total_macro_check(input):
    sum = input.sum()
    if sum == 100:
        print "You macronutrients percentages are \n Protein:", input.protein, "%"    #list for P/C/F --> %d
    ...
于 2013-02-27T10:57:40.943 回答