2016-11-16 63 views
1

我試圖創建一個計算3個溫度的平均值的Python函數的平均Python函數。我是Python的初學者,所以我想確保自己走在正確的軌道上。
這是我到目前爲止有:創建計算3號

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

你的計算做不必要的強制類型int它失去了一些精度。實際上,它會截斷小數點,從而降低平均值。

2.你不使用你寫的功能。相反,你可以用整數除法//重複你的計算代碼。請注意:

5/2 == 2.5 # floating point division 
5 // 2 == 2 # integer division 

所以在這裏,你也在丟失信息。

你應該格式化輸出到小數點後一位。這是使用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 
+0

良好的堅實的答案...壞你不會是可用的測試過程中:P +1 –

+0

沒有?我們以前有開放的網絡考試:D可能不在SD1,雖然 – schwobaseggl

+0

所以我的新代碼是... > def average(temp_one,temp_two,temp_three): >> return(temp_one,temp_two,temp_three)/ 3 >>>平均=平均(temp_one,temp_two,temp_three) 但它給了我一個無效的語法錯誤突出「平均」之上。 – Victoria

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