코드 풀이 부탁드립니다...
def create_student(name, korean, math, english, science):
return{
"name" : name,
"korean" : korean,
"math" : math,
"english" : english,
"science" : science
}
def student_get_sum(student):
return student["korean"] + student["math"] +\
student["english"] + student["science"]
def student_get_average(student):
return student_get_sum(student) / 4
def student_to_string(student):
return "{}\t{}\t{}".format(
student["name"],
student_get_sum(student),
student_get_average(student_get_average))
students = [
create_student("김민성", 87, 98, 88, 95),
create_student("연하진", 92, 98, 96, 98),
create_student("구지연", 76, 96, 94, 90),
create_student("나선주", 98, 92, 96, 92),
create_student("윤아린", 95, 98, 98, 98),
create_student("윤명월", 64, 88, 92, 92)
]
print("이름", "총점", "평균", sep="\t")
for student in students:
print(student_to_string(student))
위 코드를 실행시키면
obfect_3_seperate.py", line 39, in
print(student_to_string(student))
\obfect_3_seperate.py", line 21, in student_to_string
student_get_average(student_get_average))
\obfect_3_seperate.py", line 15, in student_get_average
return student_get_sum(student) / 4
\obfect_3_seperate.py", line 11, in student_get_sum
return student["korean"] + student["math"] +\
TypeError: 'function' object is not subscriptable
위와 같은 오류가 발생합니다. 헌데 대체 어디가 틀렸는지 모르겠습니다.
그리고 제가 알기로 리턴 값의 경우 따로 저장시키지 않으면 소멸이 되는 것으로 알고 있는데
코드의 to_string 함수 리턴에서 딕셔너리 값과 sum 값은 따로 저장시키지 않아도 값이 소멸되지 않나요?
리턴 문에서 sum 함수를 실행시키게 되면 앞선 딕셔너리 값은 소멸되고 또 average 함수를 실행시키게 되면
앞선 sum 함수의 값은 소멸되는 것 아닌가요?
개발자가_되어보자 님 602
M 2021년 1월 11일 11:39 오후
1개의 답변이 있습니다. 1 / 1 Page
student_get_average(student_get_average)
대신 student_get_average(student)
로 해야될거 같네요.
박응용 님
2021년 1월 12일 1:06 오전