尝试使用for循环来计算列表的平均值,因为我想练习。
此代码返回4,5和1的测试用例。有人可以告诉我,我做错了吗?
def list_mean(p):
total = 0
i = 0
if i < len(p):
for t in p:
total = total + p[i]
i += 1
return i
mean = i / len(p)
return mean
print list_mean([1,2,3,4])
>>> 2.5
print list_mean([1,3,4,5,2])
>>> 3.0
print list_mean([2])
>>> 2.0
答案 0 :(得分:4)
首先,我猜你做的return i
是无意的。
其次,您执行i / len(p)
而不是total / len(p)
。
我们可以更进一步,摆脱不必要的部分。如果for
等于零,则会跳过len(p)
循环,我们可以删除if i < len(p)
语句。此外,我们不需要i
变量,因为Python for
循环逐个产生每个元素。因此,您可以使用total = total + t
代替total = total + p[i]
。可能最后一点是total = total + t
在这种情况下相当于total += t
。
如果你解决了我提到的所有问题,你应该得到类似的东西:
def list_mean(p):
total = 0.0
for t in p:
total += t
mean = total / len(p)
return mean
但是如果你想计算均值,你可以使用它:
mean = sum(p) / len(p)
请注意,对于Python 2,您需要将类型显式转换为float
:
mean = float(sum(p)) / len(p)
答案 1 :(得分:0)
这是学校的任务吗?用于循环是强制性的吗?
a = [1,2,3,4]
mean_val = sum(a)/len(a)
print mean_val
或
given = [1,3,4,5,2]
def mean_val(a):
b = sum(a)/len(a)
return b
print mean_val(given)