Форум сайта python.su
0
Итак, на codecademy наткнулся на задчку:
Now let's write a get_letter_grade function that takes score as input and returns a string with the letter grade that that student should receive.
These are the grade cutoffs:
Scores 90 or above: return "A"
If 80 <= score < 90: return "B"
If 70 <= score < 80: return "C"
If 60 <= score < 70: return "D"
If score < 60: return "F"
Finally, pass your function the result of running get_average on lloyd and print the resulting letter grade.
#Заполнение словарей опущено def average(lst): s = 0.0 for num in lst: s += num av = s / len(lst) return(av) def get_average(dict): for key in dict: if key == 'tests': tests_average = average(dict['tests']) elif key == 'homework': homework_average = average(dict['homework']) elif key == 'quizzes': quizzes_average = average(dict['quizzes']) general_average = homework_average*0.1 + quizzes_average*0.3 + tests_average*0.6 return general_average def get_letter_grade(score): if score >= 90: mark = 'A' elif (score <= 80) and (score < 90): mark = 'B' elif (score <= 70) and (score < 80): mark = 'C' elif (score <= 60) and (score < 70): mark = 'D' elif score < 60: mark = 'F' return mark x = get_average(lloyd) result = get_letter_grade(x) print(result)
UnboundLocalError: local variable 'mark' referenced before assignment
Отредактировано kozlo22 (Авг. 21, 2013 02:11:47)
Офлайн
36
У вас условия не правильно прописаны. При score = 81? например, переменной mark не будет присвоено ни какого значения - вот и ошибка.
Попробуйте так:
average = lambda x: sum(x) / len(x) def get_average(dict): ... 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' return 'F'
Офлайн
0
pyuser
Помогло, спасибо.
Офлайн