#python #nameerror
Вопрос:
Я получаю ошибку имени: имя «index1» не определено в последнем операторе if. Я не понимаю, в чем проблема, так как я определил index1 и index2 в предыдущем блоке кода.
... else: for l1 in Xdisp_list: for l2 in l1: if l2 == from_previous[run_number-2]: index1 = (wn_final.index(l1)) index2 = (wn_final[wn_final.index(l1)].index(l2)) else: pass if w_ki - Xdisp_list[index1][index2] lt; delta: code_list_run.append(0) ...
Для уточнения кода:
Xdisp_list-это список списков
run_number-это целое число
wn_final также является списком списков
Ответ №1:
вы определяете index1 и index2 внутри оператора if else, поэтому, если оператор l2 == from_previous[run_number-2]
False
принимает значение, ни один из них не будет определен при вычислении строки w_ki - Xdisp_list[index1][index2] lt; delta
,
вы можете либо добавить второй оператор if внутри первого, либо определить значения по умолчанию index1 и index2, как это, и в этом случае оператор else больше не нужен
else: for l1 in Xdisp_list: for l2 in l1: if l2 == from_previous[run_number-2]: index1 = (wn_final.index(l1)) index2 = (wn_final[wn_final.index(l1)].index(l2)) if w_ki - Xdisp_list[index1][index2] lt; delta: code_list_run.append(0)