Я объявил глобальную переменную в своем модуле settings.py:
def init():
global grid
grid = [[0,0,0,0,0,0,1,4,3],
[9,0,0,0,0,0,0,0,0],
[0,0,2,0,4,5,0,8,0],
[0,0,0,0,0,3,0,1,0],
[0,6,0,4,9,1,0,5,0],
[0,4,0,6,0,0,0,0,0],
[0,8,0,7,5,0,4,0,0],
[0,0,0,0,0,0,0,0,8],
[2,1,5,0,0,0,0,0,0]]
У меня есть другой модуль run.py, который содержит функцию, которая должна изменять сетку:
import numpy
import settings
def solve():
for x in range(9):
for y in range(9):
if settings.grid[x][y] == 0:
for number in range(1,10):
if possible(x,y,number): #function described in this file, not usefull here
settings.grid[x][y] = number
solve()
settings.grid[x][y] = 0
return
print("Solved sudoku in solve():\n{}\n".format(numpy.matrix(settings.grid))) #2nd output
В моем main.py я сначала инициализирую settings.grid, вызывая settings.init (). После этого я в основном печатаю переменную сетки из settings.py, затем вызываю run.solve (), чтобы изменить ее (это работает, так как 2-й вывод заменит 0), а затем перепечатываю settings.grid, чтобы увидеть, изменилась ли переменная соответственно ко второму выходу:
import numpy
import settings
import run
settings.init()
print("Inserted sudoku:\n{}\n".format(numpy.matrix(settings.grid)))
run.solve()
print("Solved sudoku:\n{}\n".format(numpy.matrix(settings.grid)))
Моя проблема в том, что третий вывод не принимает то же значение settings.grid, что и второй, например, если run.solve () даже не вызывался!
Это выходные данные, которые я получаю:
1st output
Inserted sudoku:
[[0 0 0 0 0 0 1 4 3]
[9 0 0 0 0 0 0 0 0]
[0 0 2 0 4 5 0 8 0]
[0 0 0 0 0 3 0 1 0]
[0 6 0 4 9 1 0 5 0]
[0 4 0 6 0 0 0 0 0]
[0 8 0 7 5 0 4 0 0]
[0 0 0 0 0 0 0 0 8]
[2 1 5 0 0 0 0 0 0]]
2nd output
Solved sudoku in solve():
[[6 5 8 9 2 7 1 4 3]
[9 3 4 1 6 8 2 7 5]
[1 7 2 3 4 5 9 8 6]
[8 2 9 5 7 3 6 1 4]
[7 6 3 4 9 1 8 5 2]
[5 4 1 6 8 2 3 9 7]
[3 8 6 7 5 9 4 2 1]
[4 9 7 2 1 6 5 3 8]
[2 1 5 8 3 4 7 6 9]]
3rd output
Solved sudoku:
[[0 0 0 0 0 0 1 4 3]
[9 0 0 0 0 0 0 0 0]
[0 0 2 0 4 5 0 8 0]
[0 0 0 0 0 3 0 1 0]
[0 6 0 4 9 1 0 5 0]
[0 4 0 6 0 0 0 0 0]
[0 8 0 7 5 0 4 0 0]
[0 0 0 0 0 0 0 0 8]
[2 1 5 0 0 0 0 0 0]]
Есть ли у вас какие-либо идеи о том, как я могу получить 3-й выход, как 2-й? Другими словами, знаете ли вы, как я могу изменить значение settings.grid для изменения в моем main.py после вызова run.solve ()?
Заранее спасибо