创建一个Python函数,计算3个数字的平均值

时间:2016-11-16 23:50:31

标签: python python-3.x average

我正在尝试创建一个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))

对于这部分我不太确定..感谢任何帮助,谢谢!

2 个答案:

答案 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