在可互换范围内计算平均值?

0 投票
3 回答
1254 浏览
提问于 2025-04-15 15:28

我知道这是因为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的平均值),你需要对这个公式进行一些调整。

撰写回答