我知道這是由於n,但n的應該是任何變量,和左正,這是我有:計算可互換範圍內的平均值?
def average(n):
if n >= 0:
avg = sum((range(1:int(n)))/float(len(range(1:int(n)))))
print avg
如何解決呢?
我知道這是由於n,但n的應該是任何變量,和左正,這是我有:計算可互換範圍內的平均值?
def average(n):
if n >= 0:
avg = sum((range(1:int(n)))/float(len(range(1:int(n)))))
print avg
如何解決呢?
如果你的範圍始終是1:N,你爲什麼不只是使用:
avg = sum((range(1:int(n)))/float(n))
或者,也許我不理解你的問題......
我可能是錯的,但範圍(1:int(n))在句法上看起來不正確,而括號不匹配。您可能想要計算0到n範圍內的數字的平均值。在這種情況下,我會取代你這樣的代碼:
def average(n):
if n >= 0:
avg = sum((range(int(n))))/float(n)
print avg
+1給你!完全錯過了parens錯配。太好了! – 2009-10-28 21:22:48
它不會計算出適當的平均值,例如如果我使用該代碼並將n插入3,那麼平均值仍然應爲2,但Python輸出爲1.0 – 2009-10-28 21:36:11
範圍(n)返回[0..n [; []之間的整數數組)。對於3,這將是[0,¸1,2]; sum()將返回3,列表中元素的數量是... 3;因此,3/3 == 1.0 – 2009-10-29 14:34:11
x的從1到n的總和僅僅是(n + 1) * (n/2)
。總結的元素數量爲n
。做一個小的簡化和新的功能是
def average(n):
return (n + 1)/2.0
你必須調整這個,如果你真的想要一個獨特的上限的範圍()(即具有平均(10)返回的平均Python的行爲值1 - 9而不是1 - 10的總和)。
謝謝你,我知道如何改變它以包括額外的總和,我想知道如何解決我原來的嘗試,但我想最簡單的版本更好,再次感謝你。 – 2009-10-28 21:43:15
然後你被範圍()的行爲咬住了。範圍(1,10)返回[1,2,3,4,5,6,7,8,9]。所以你想要範圍(1,n + 1)。 – jamessan 2009-10-28 21:48:17
我不明白你在問什麼。 – 2009-10-28 21:14:06
你如何解決什麼問題? – kurosch 2009-10-28 21:14:17