Если вы изменяете глобальную переменную из функции, вам нужно пометить ее как глобальную, в противном случае функция будет обрабатывать эту переменную как локальную. Это то, что вы получаете. Вы получаете пустой список queens
в вашей функции complete
. Обратите внимание, что вы можете ссылаться на глобальные (как вы делаете это в функциях printQ
и solve
, но если вы собираетесь изменить его (как у вас в функции complete
), вы должны отметить его как global
. пример того, как это сделать. Также вам не нужно помечать его как глобальный на уровне модуля (первая строка в вашем коде), он должен быть на функциональном уровне
def complete():
global queens
for i in range(8):
if solve(i) == True:
queens += [i]
elif solve(i) == False:
queens = queens - [i]
else:
return