我的macro_percentages
会返回3个整数的列表。我已经测试了这个,输出是正确的。但是,当我打印时,在每个打印语句中都认为我得到的是0.0s
。有些东西导致我的值变为0
macro_percentages --> [20,20,60]
代码:
macro_percentages = ask_macro_percentages()
print "Your meal plan consists of: " + str(float((macro_percentages[0]/100) * calorie_deficit)) + "g of protein, ",
print str(float((macro_percentages[1]/100) * calorie_deficit)) + "g of fat, ",
print "and " + str(float((macro_percentages[2]/100) * calorie_deficit)) + "g of carbohydrates"
答案 0 :(得分:6)
str(float((macro_percentages[0]/100)
首先,macro_percentages[0]
除以100
。由于macro_percentages[0]
是int
,而100
是int
,因此Python 2使用整数除法,为您提供0
。只有在此之后,0
才会转换为float
,然后转换为str
。但是这一点已经失去了小数值。
你可以将它放在脚本的顶部,使用浮点除法(Python 3中的默认值):
from __future__ import division
或者将float包装到分子:
str((float(macro_percentages[0])/100)
或除以浮点100.0
:
str(macro_percentages[0]/100.0)
答案 1 :(得分:1)
当使用整数在Python中进行分割时,返回的值将是一个整数,所以您需要做的就是将100更改为100.0(我替换10替换calorie_deficit,因为我需要测试它)希望这有帮助
macro_percentages = [20,20,60]
print "Your meal plan consists of: " + str(float((macro_percentages[0]/100.0) * 10)) + "g of protein, ",
print str(float((macro_percentages[1]/100.0) * 10)) + "g of fat, ",
print "and " + str(float((macro_percentages[2]/100.0) * 10)) + "g of carbohydrates"