#python #debugging #local
#python #отладка #Местные новости
Вопрос:
Я продолжаю получать несвязанную локальную ошибку. Я не понимаю, почему это происходит, если программа работает правильно, она должна сразу перейти ко второму назначению функции print_et_list в основной функции, зацикливаясь сама по себе без фактического зацикливания. Программа завершается только с помощью sys.exit() в функции hey_user.
Я включил всю программу для контекста, она не слишком длинная. Дайте мне знать, если вы хотите взглянуть на текстовые файлы, которые я использую в программе, однако я уверен, что маловероятно, что это источник проблемы.
Комментарии:
1. На самом деле вам следует поместить программу в вопрос, поскольку пирожки иногда исчезают.
Ответ №1:
UnboundLocalError возникает, когда вы считываете значение локальной переменной перед ее установкой. Почему score является локальной переменной, а не глобальной переменной? Потому что вы задаете ее в функции. Рассмотрим эти две функции:
def foo():
print a
против
def bar():
a = 1
print a
В foo() a является глобальным, потому что оно не задано внутри функции. В bar() a является локальным. Теперь рассмотрим этот код:
def baz():
print a
a = 1
Здесь a задано внутри функции, поэтому оно локальное. Но она не была установлена во время выполнения инструкции print, поэтому вы получаете UnboundLocalError.
Ответ №2:
Вы забыли передать score
в hey_user()
.
Ответ №3:
Похоже, что это, вероятно, переменная score. Это локальная ошибка в main (), но вы пытаетесь ссылаться на нее в hey_user().
Комментарии:
1. Вопрос: Когда я инициализирую score в начале всего процесса, по-прежнему возникает та же ошибка.
Ответ №4:
Если вы хотите сделать score глобальной переменной, обязательно объявите ее с помощью global
инструкции:
def main (): глобальная оценка score = 0 вопрос, решение = print_et_list() scoresofar = hey_user (решение) выведите «Ваша оценка теперь», забивает на вопрос, решение = print_et_list()