我正在尝试创建一个Python函数来计算3个温度的平均值。我是Python的初学者,所以我想确保自己走在正确的轨道上 这就是我到目前为止所做的:
def average(temp_one, temp_two, temp_three):
avg = (int(temp_one) + int(temp_two) + int(temp_three))/3
return avg
然后我必须使用创建的功能提示3个温度并计算平均值。平均输出必须包含一位小数。
def average(temp_one, temp_two, temp_three):
avg = (int(temp_one) + int(temp_two) + int(temp_three))/3
return (avg)
temp_one = float(input(“Enter temperature one:”))
temp_two = float(input(“Enter temperature two:”))
temp_three = float(input(“Enter temperature three:”))
average = ( temp_one+ temp_two + temp_three ) // 3
print (average(temp_one, temp_two, temp_three))
对于这部分我不太确定..感谢任何帮助,谢谢!
答案 0 :(得分:2)
1。您的计算是对int
进行不必要的强制转换,这会失去一些精确度。实际上,它会截断小数位,从而人为地降低了平均值。
2。您没有使用您编写的功能。而是使用整数除法//
重复计算代码。请注意:
5 / 2 == 2.5 # floating point division
5 // 2 == 2 # integer division
所以在这里,你也失去了信息。
3. 您应该将输出格式化为一个小数位。最好使用string formatting
完成此操作<强>因此:强>
def average(temp_one, temp_two, temp_three):
return (temp_one + temp_two + temp_three) / 3
# why cast to int and lose precision
# read your 3 float inputs ...
avg = average(temp_one, temp_two, temp_three) # actually use your function
print('{:.1f}'.format(avg)) # format output
答案 1 :(得分:0)
"%0.1f"%my_float
#or
"{0:0.1f}".format(my_float)
#or
"{my_float:0.1f}".format(my_float=my_float)
将打印一个带小数点后1位的浮点数,另请参阅python format strings