我是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_sum
和Macro_dict
,
我无法在Total_macro_check
中使用其输出,因为它返回了多个值,而Total_macro_check
只接受1个值。
答案 0 :(得分: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()
答案 1 :(得分:2)
修改Macro_input()
以返回Macro_dict
和Macro_sum
def Macro_input():
# your code
return Macro_sum, Macro_dict
然后你在main函数中可以将返回的元组解压缩为两个变量:
def main():
print "Please enter your macro-nutrients"
Total_macro_value, Macro_dict = Macro_input()
Total_macro_check(Total_macro_value)
答案 2 :(得分: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
...