【发布时间】:2009-10-28 21:12:28
【问题描述】:
我知道是因为 n,但是 n 应该是任何变量,并且保留为 n,这就是我所拥有的:
def average(n):
if n >= 0:
avg = sum((range(1:int(n)))/float(len(range(1:int(n)))))
print avg
我该如何解决?
【问题讨论】:
-
我不明白你在问什么。
我知道是因为 n,但是 n 应该是任何变量,并且保留为 n,这就是我所拥有的:
def average(n):
if n >= 0:
avg = sum((range(1:int(n)))/float(len(range(1:int(n)))))
print avg
我该如何解决?
【问题讨论】:
x 从 1 到 n 的总和就是 (n + 1) * (n / 2)。求和的元素数量为 n 。做一点简化,你的新功能是
def average(n):
return (n + 1) / 2.0
如果您确实希望 Python 的 range() 具有独占上限的行为(即让 average(10) 返回值 1 - 9 而不是 1 - 10 的总和的平均值,则必须对此进行调整)。
【讨论】:
我可能错了,但 range(1:int(n)) 看起来语法不正确,括号也不匹配。您可能想要计算 0 到 n 范围内数字的平均值。在这种情况下,我会像这样替换您的代码:
def average(n):
if n >= 0:
avg = sum((range(int(n))))/float(n)
print avg
【讨论】:
如果你的范围总是 1:n,你为什么不直接使用这个:
avg = sum((range(1:int(n)))/float(n))
或者我不明白你的问题...
【讨论】: