2014-12-21 5 views
2

연습 중 하나에서 클래스 평균을 계산해야합니다. 하지만 여기에 어떤 이슈에 직면하고 있습니다 ... 평균을 계산하는 것에 대해 을 전달하기 위해, 나는 통과되는 각 학생을 반복해야합니다. get_class_average() 함수가 예상대로 작동하지 않습니다. 두 학생의 이름 (alice, lloyd)을 사용하여이 함수를 호출하지만, 앨리스 만 처리되고 85.85 대신 91.15가 반환됩니다 ...Python/Codeacademy : 클래스 평균 계산

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] 
} 

# Add your function below! 
def average(numbers): 
    total=sum(numbers) 
    total= float(total) 
    result = total/len(numbers) 
    return result 

def get_average(student): 
    homework = 0.10 * average(student['homework']) 
    quizzes = 0.30 * average(student['quizzes']) 
    tests = 0.60 * average(student['tests']) 

    return (homework + quizzes +tests) 


# This section is not working properly  
def get_class_average(students): 
    results =[] 
    for item in students: <-- This loop may not be working 
     print item 
     result =get_average(item) 
     results.append(result) 
     print results 
     return average(results) 


print get_class_average([alice,lloyd]) 
+0

함수 메서드는 하나의'return' 만 가질 수 있습니다. 'get_class_average' 메쏘드는 for 루프의 끝에 return 문을 가지고 있습니다. 각 목록의 평균을 임시 목록에 저장 한 다음 반환해야합니다. –

+0

iluengo : 사실이 아닙니다. 함수는 둘 이상의'return' statemets을 가질 수 있습니다. 이 오류를 일으키는 코드입니다. – Nebril

+0

글쎄, 나는 일반적인 경우가 아니라이 특별한 경우에 대해 이야기했다. Btw, thx에 대한 수정. –

답변

2

당신은 루프의 일부가 될 줄

return average(results)

을 들여했습니다. return 인터럽트 루프 (for 루프 포함) 이후 루프의 첫 번째 반복 (즉, 앨리스) 만 실행됩니다. 이 줄을 for 루프와 같은 수준에 놓습니다. 이렇게하면 루프가 완료되고 함수가 결과를 반환 한 후에 루프가 완료됩니다.

-1

인수가 정의되어 있지 않지만 학생의 각 항목에 대해 루프를 설정했지만 학생이 정의되지 않은 상태에서 코드에 문제가있는 경우.

이 그런 짓을하려고 :

students = [lloyd, alice, tyler] 

def get_class_average(students): 
results = [] 
for student in students: 
    results.append(get_average(student)) 
return average(results) 

print get_class_average(students) 
여기

내가 변수 학생들의 평균을 계산하고 난 그냥 우리의 변수에 우리의 목록에 결과를 추가 이미 기능 중 하나를 사용하고 싶어하는 학생들 정의 "결과".

+0

질문의 마지막 줄까지 스크롤하면 학생들의 출신 국을 알 수 있습니다. – Seb