我的函数查找列表的平均值有什么问题



我知道有一种更简单的方法可以在不使用for循环的情况下找到列表的平均值,但在这种情况下,我需要使用for循环编写一个函数来找到平均值。

myOddList = [1, 2, 3, 4, 5]
def meanCalculator(myOddList):
sumOfNumbers = 0
for i in myOddList:
sumOfNumbers += i
mean = sumOfNumbers / (len(myOddList))
return mean

mean = meanCalculator(myOddList)
print(mean)

当我运行这段代码而不是得到3时,我得到了0.2,所以我知道这一切看起来很简单,但我不知道我做错了什么。

由于在Python中,您必须通过缩进来定义循环的开始和结束时间,因此当您返回当前执行情况的平均值时:

myOddList = [1, 2, 3, 4, 5]
def meanCalculator(myOddList):
sumOfNumbers = 0
for i in myOddList:
sumOfNumbers += i
mean = sumOfNumbers / (len(myOddList))
return mean <------- this stops the for loop at the first iteration
and  returns 1 / (len(myOddList)) = 0.2

mean = meanCalculator(myOddList)
print(mean)

但如果你按照以下方式进行操作,它会按预期工作:

myOddList = [1, 2, 3, 4, 5]
def meanCalculator(myOddList):
sumOfNumbers = 0
for i in myOddList:
sumOfNumbers += i
mean = sumOfNumbers / (len(myOddList))
return mean <------- this way you return the mean only once the 
for loop is complete and you have found the sum
of all the numbers in the array
mean = meanCalculator(myOddList)
print(mean)

您正在返回for循环中的平均值。它到达第一个数字1,并将其除以5,返回0.2

myOddList = [1, 2, 3, 4, 5]
def meanCalculator(myOddList):
sumOfNumbers = 0
for i in myOddList:
sumOfNumbers += i
mean = sumOfNumbers / (len(myOddList))
return mean

mean = meanCalculator(myOddList)
print(mean)

this:

def meanCalculator(myOddList):
sumOfNumbers = 0
for i in myOddList:
sumOfNumbers =i+sumOfNumbers
mean = sumOfNumbers / (len(myOddList))
return mean

mean = meanCalculator(myOddList)
print(mean)

您必须处于循环之外--->返回平均

将所有数字相加,然后返回for循环外的平均值。在求和完成之前,不需要在for循环内计算平均值,并且您不希望returnfor循环中,或者它在第一个数字上停止。CCD_ 5是另一个优化。

def meanCalculator(myOddList):
sumOfNumbers = 0
for i in myOddList:
sumOfNumbers += i
return sumOfNumbers / len(myOddList)

对我来说,这似乎是一个缩进问题,其他一些行缩进过多:

myOddList = [1, 2, 3, 4, 5]
def meanCalculator(myOddList):
sumOfNumbers = 0
for i in myOddList:
sumOfNumbers += i
# Should be outside the loop since
# It doesn't really make sense to keep computing the mean for every iteration of the loop
mean = sumOfNumbers / (len(myOddList))
return mean

mean = meanCalculator(myOddList)
print(mean)

此外,您应该能够使用内置的总和来计算阵列的总和

def meanCalculator(myOddList):
sumOfNumbers = sum(myOddList)
mean = sumOfNumbers / len(myOddList)
return mean

myOddList = [1, 2, 3, 4, 5]
mean = meanCalculator(myOddList)
print(mean)

最新更新