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の場合に出力できます。
ただし、100にMacro_sum等しいかどうかも確認します。つまり、値を
出力する必要があります。Macro_sum関数Total_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 を float yes にキャストしていますが、その値を何にも割り当てていません。

あなたの機能はそうあるべきです。

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_dictMacro_sum

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

次に、メイン関数で、返されたタプルを次のような2つの変数に解凍できます。

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

this のインスタンスを作成して、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 に答える