Присвоение значения переменной внутри цикла for
У меня есть цикл for, который проходит через список городов, а также их широкие переменные (безопасность, доступность, транзит и т.д.). Если есть совпадение между широкой&специфической переменной города и широкой&специфической переменной, которую пользователь выбирает на странице, то присваивается взвешенное значение, иначе значение равно 0. Я пытаюсь добавить значения для каждой широкой переменной в списке, но получаю ошибку
локальная переменная 'city_variable1_value' упоминается перед присвоением
Когда я ссылаюсь на city_variable1_value и city_variable2_value как на 0 перед первым оператором if, то мой
total_city_value = city_variable1_value + city_variable2_value
равняется 0, когда должно быть, например, 0,24. Код приведен ниже!
views.py
Ваша программа достигла строки total_city_value = city_variable1_value + city_variable2_value
, ни разу не присвоив значение city_variable1_value
. Это возможно, если условие broad_variable == broad_variable1
никогда не было истинным в цикле for, который присваивает значение city_variable1_value
.
Для минимального примера, если вы сделали это,
def f():
if False:
a = 10
print(a)
f()
вы получите ту же ошибку UnboundLocalError: local variable 'a' referenced before assignment
.
Чтобы исправить это, просто присвойте переменным значение по умолчанию перед оператором if, что потенциально предотвратит присвоение. Например,
city_variable1_value = 0
if broad_variable == broad_variable1:
...
city_variable2_value = 0
if broad_variable == broad_variable2:
...