2013-02-27 38 views
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),
這樣我就可以把它打印出來,如果所有的宏(Macro_sum)的總和爲100
但我也想檢查Macro_sum是否等於100.
這意味着我必須將值Macro_sum輸出到函數Total_macro_check

但是我覺得好像如果我的Macro_input函數返回Macro_sumMacro_dict
我不能因爲它返回不止一個值,而Total_macro_check只接受1個值使用其輸出Total_macro_check

回答

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 
    ... 
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) 
4

你的功能Macro_Input是忌。 我不認爲這條線的行爲如你所想。

float(Percent_protein) 

這是鑄造Percent_protein浮動是,但它不會將該值分配給任何東西。

你的func應該是。

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() 
+0

使我的代碼看起來更好!感謝您的輸入! – Liondancer 2013-02-27 11:00:12

+1

它不回答問題標題,但它回答了問題的實際問題。 – James 2013-02-27 11:01:33

+0

ahyeah我看到你現在實際上是正確的。我只是假設(如同驢一樣)看到這個問題,並且問題的最終結果是他想要輸出每個單獨的總和,因爲他沒有得到它想要的結果。 – James 2013-02-27 11:09:45

相關問題