我知道这是由于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