首先,我是python的新手。因此,我只知道循环,范围,镜头和总和来解决这个问题。我很难尝试创建一个可以平均数字列表的函数。
到目前为止,这是我的代码:
def ave(L):
L = list(range(len(L))
for a in range(len(L)):
if len(L) == 0: return 0
else: return float((sum(L))/len(L))
到目前为止,我的第三行range(L)
收到语法错误。
答案 0 :(得分:3)
您需要做的就是返回L
之和除以L
的长度:
def ave(L):
if not L:
return 0
return sum(L) / len(L)
不需要range()
或float()
或for
。
在Python 3中,/
始终生成一个浮点数。 sum()
将为您完成所有循环。您唯一需要注意的是,如果列表为空,则返回0
。
答案 1 :(得分:1)
以下行缺少)
:
L = list(range(len(L)))
^
答案 2 :(得分:1)
由于空列表的平均值未定义,因此您应该返回None而不是'0'。 根据{{3}},检查长度,最好捕捉潜在的错误。它也更清楚你在做什么,因为错误是自描述的。
def ave(L):
try:
return sum(L) / len(L)
except ZeroDivisionError:
return None