Найти - Пользователи
Полная версия: Непонятная ошибка в коде
Начало » Python для новичков » Непонятная ошибка в коде
1
kozlo22
Итак, на 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)
При запуске ругается на то, что обращение к mark осуществляется до ее определения.
UnboundLocalError: local variable 'mark' referenced before assignment
pyuser
У вас условия не правильно прописаны. При 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'
kozlo22
pyuser
Помогло, спасибо.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB