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的整数的平均值。 我错过了什么?
答案 0 :(得分:6)
有两个原因。首先,你将0..4(包括)中的数字相加。您可以通过执行range(1,n+1)
或更改为sum += var + 1
第二个原因是默认情况下使用整数除法,您可以通过添加到顶部来强制执行浮点除法:
from __future__ import division
或在本地return sum/float(count)
答案 1 :(得分:2)
引用文档:
范围(开始,停止[,步骤])
如果省略start参数,则默认为0.完整表单 返回普通整数列表[start,start + step,start + 2 * 步, ...]。如果step为正,则最后一个元素是最大的开始 + i *步骤小于停止;
换句话说,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))