2013-12-06 3 views
0

Я получаю эту ошибку из кода: «UnboundLocalError: локальная переменная« самая низкая », на которую ссылаются перед назначением». Почему я получаю это? Что означает «ссылка перед назначением» в данном случае? Потому что я думаю, что я назначаю переменную «lower» только после определения переменной «score». Любая помощь будет оценена по достоинству.Код указывает переменную, привязанную перед назначением?

def main(): 
     scores = get_score() 
     total = get_total(scores) 
     lowest -= min(scores) 
     average = total/(len(scores) - 1) 
     print('The average, with the lowest score dropped is:', average) 


def get_score(): 
     test_scores = [] 
     again = 'y' 
     while again == 'y': 
        value = float(input('Enter a test score: ')) 
        test_scores.append(value) 
        print('Do you want to add another score? ') 
        again = input('y = yes, anything else = no: ') 
        print() 
     return test_scores 

def get_total(value_list): 
     total = 0.0 
     for num in value_list: 
        total += num 
     return total 


main() 

ответ

3

Вы используете - =, для чего требуется начальное значение. Но вы не даете начального значения. В контексте это похоже на то, что вы хотели использовать = вместо этого.

3

Это потому, что в основной() вы говорите

lowest -= min(scores) 

который является по существу самый низкий = низкий - мин (баллы). Поскольку у вас нет самого низкого набора ранее, вы получите эту ошибку

+0

Спасибо за помощь. Я либо не видел, либо сейчас должен был идти в постель. :) – shanglawt

1

Ваша самая низкая переменная не определена. Вы используете «lower - = min (score)», что означает вычитание min (баллов) из самого низкого, но минимальное значение еще не существует. Основываясь на названии переменной, я предполагаю, что вы хотите:

def main(): 
    scores = get_score() 
    total = get_total(scores) 
    lowest = min(scores) 
    average = total/(len(scores) - 1) 
    print('The average, with the lowest score dropped is:', average) 
Смежные вопросы