[英]How can I find the average of averages using Python?
我必須找到一班學生的平均分數。 我想通過找到每個學生的平均值並找到這些平均值的平均值來做到這一點。 除了以下代碼塊,我在程序中的所有其他內容均正常運行:
def get_class_average(class_list):班級列表中學生的總數= 0:student =學生[“名稱”] get_average(學生)total_class + = get_average(學生)
如果有人詢問,我可以為您提供其余的代碼,但是我知道這可能就是該段。 這是我的錯誤:
get_class_average([lloyd])返回85.85而不是預期的80.55
所以我在做數學上不正確的事情。 我相信問題是我正在嘗試使用for循環來做到這一點。 您如何找到整個班級的正確平均值?
編輯:
這是我在代碼中擁有的另一個功能。 它不是唯一的一個,但是我的錯誤表明這是:
# Add your function below!
def average(numbers):
total = sum(numbers)
total = float(total)
total /= len(numbers)
return total
我認為該功能存在錯誤。
lloyd = {
"name": "Lloyd",
"homework": [90.0, 97.0, 75.0, 92.0],
"quizzes": [88.0, 40.0, 94.0],
"tests": [75.0, 90.0]
}
alice = {
"name": "Alice",
"homework": [100.0, 92.0, 98.0, 100.0],
"quizzes": [82.0, 83.0, 91.0],
"tests": [89.0, 97.0]
}
tyler = {
"name": "Tyler",
"homework": [0.0, 87.0, 75.0, 22.0],
"quizzes": [0.0, 75.0, 78.0],
"tests": [100.0, 100.0]
}
results = []
# Add your function below!
def get_average(numbers):
for total in numbers:
total += total
total *= 1.0
total /= len(numbers)
return total
def get_letter_grade(score):
if score >= 90:
return "A"
elif score >= 80:
return "B"
elif score >= 70:
return "C"
elif score >= 60:
return "D"
else:
return "F"
def get_class_average(class_list):class_list中學生的總數= 0:student = student [“ name”] get_average(學生)total_class + = get_average(學生)
return average(class)
在不了解您的功能的情況下,調試起來有些困難。 我也想知道為什么你有一個函數get_average
和一個average
函數。 無論如何,我敢打賭,錯誤是您在第一個代碼示例中返回了average(b)
而不是average(results)
。 同樣,此語句將需要較少的縮進級別,否則您的for
循環將永遠不會超出students
的第一個x
。 當前,您只是返回average(get_average(x))
,其中x
是students
的第一項。
您的第二個函數更接近,最終的return
語句只需要縮進一級,就需要初始化results
。 嘗試這個:
def get_class_average(students):
results = [] # initialize results
for result in students:
result = get_average(result)
results.append(result)
return average(results) # not part of the for looop
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.