-1
def avg(n):
    count=0
    sum=0
    for var in range(n):
        count+=1
        sum+=var
    return (sum/count)
print (avg(5))

这是尝试使用 for 循环来查找从 1 到 n 的整数的平均值。我错过了什么?

4

2 回答 2

6

两个原因。首先,您将 0..4(包括)的数字相加。您可以通过做来修复它range(1,n+1),或更改为sum += var + 1

第二个原因是默认使用整数除法,您可以通过添加到顶部来强制执行浮点除法:

from __future__ import division

或在当地做return sum/float(count)

于 2013-09-15T00:34:42.693 回答
2

引用文档:

范围(开始,停止[,步骤])

如果省略 start 参数,则默认为 0。完整形式返回纯整数列表 [start, start + step, start + 2 * step, ...]。如果 step 为正,则最后一个元素是最大的 start + i * step小于 stop

换句话说,range()在 Python 中是不包含的。这意味着您的代码中有一个错误,它应该是这样的:

def avg(n):
    count=0
    sum=0
    for var in range(1, n+1):
        count+=1
        sum+=var
    return (float(sum)/count)
print (avg(5))
于 2013-09-15T00:34:31.100 回答