在可互换范围内计算平均值?
我知道这是因为n的原因,但n本来应该是任何变量,保留n的话,我现在有这个:
def average(n):
if n >= 0:
avg = sum((range(1:int(n)))/float(len(range(1:int(n)))))
print avg
我该怎么解决这个问题呢?
3 个回答
0
如果你的范围总是从1到n,那你为什么不直接用这个呢:
avg = sum((range(1:int(n)))/float(n))
或者也许我没有理解你的问题...
1
我可能说错了,但这个写法 range(1:int(n)) 看起来语法上不太对,括号也没有配对好。你可能是想计算从 0 到 n 之间数字的平均值。如果是这样的话,我建议把你的代码改成这样:
def average(n):
if n >= 0:
avg = sum((range(int(n))))/float(n)
print avg
2
从1加到n的总和可以简单地用公式 (n + 1) * (n / 2)
来表示。这里被加的数字总共有 n
个。稍微简化一下,你的新函数就是这样。
def average(n):
return (n + 1) / 2.0
如果你想要Python中range()的行为是上限不包括在内(也就是说,调用average(10)时返回的是1到9的平均值,而不是1到10的平均值),你需要对这个公式进行一些调整。