0

我知道这是因为 n,但 n 应该是任何变量,并保留为 n,这就是我所拥有的:

def average(n):
    if n >= 0:
        avg = sum((range(1:int(n)))/float(len(range(1:int(n)))))
    print avg

我如何解决它?

4

3 回答 3

2

x 从 1 到 n 的总和很简单(n + 1) * (n / 2)。求和的元素数为n。做一点简化,你的新功能是

def average(n):
    return (n + 1) / 2.0

如果您确实希望 Python 的 range() 具有独占上限的行为(即让 average(10) 返回值 1 - 9 而不是 1 - 10 的总和的平均值),则必须对此进行调整。

于 2009-10-28T21:37:18.410 回答
1

我可能错了,但 range(1:int(n)) 看起来语法不正确,括号也不匹配。您可能想要计算 0 到 n 范围内数字的平均值。在这种情况下,我会像这样替换您的代码:

def average(n):
if n >= 0:
    avg = sum((range(int(n))))/float(n)
print avg
于 2009-10-28T21:21:28.060 回答
0

如果你的范围总是 1:n,你为什么不直接使用这个:

avg = sum((range(1:int(n)))/float(n))

或者我不明白你的问题......

于 2009-10-28T21:16:59.937 回答