2014-10-26 1 views
0

Я создаю решатель sudoku с обратным отсчетом. Теперь мне нужно добавить 1 к каждой ячейке. Я использую «для» цикла:Для методов цикла и добавления со списками на Python 3

board = [[[0],[0],[0],[0]], 
      [[0],[0],[0],[0]], 
      [[0],[0],[0],[0]], 
      [[0],[0],[0],[0]]]` 

a=0 
b=0 
x=board[a][b]` 

for i in x: 
    x.append(i+1) 
    y = [sum(x)] 
    print(y) 
    break 
board[a][b] = y 

Что происходит, что, если у меня есть номер на борту, как «2», он делает операцию (1+1)+(1+1) +1 и возвращает 5 вместо 3. Я получаю 9 из 4 [(1+1)+(1+1)+(1+1)+(1+1)+1)] и т. Д.

Я собираюсь решить его, переведя «x» из списка в целое число, а затем добавив 1, а затем переведя его в список.

Более эффективные и экономичные идеи?

(Я хочу, чтобы, если это возможно, структура списка «доски», но я открыт для любых предложений, конечно.)

EDIT:

Если у меня есть это:

board = [[[0],[3],[2],[0]], 
      [[0],[0],[0],[0]], 
      [[0],[0],[0],[0]], 
      [[0],[0],[0],[0]]]` 

Я хочу, чтобы это закончилось так:

board = [[[1],[4],[3],[1]], 
      [[1],[1],[1],[1]], 
      [[1],[1],[1],[1]], 
      [[1],[1],[1],[1]]]` 

Вместо этого, я получаю:

board = [[[1],[7],[5],[1]], 
      [[1],[1],[1],[1]], 
      [[1],[1],[1],[1]], 
      [[1],[1],[1],[1]]]` 

РЕШЕНИЕ:

for i in x: 
    x.append(1) #Quite simple 

Спасибо Джеймс!

+0

просто для уточнения, вы хотите, чтобы все ячейки содержали 1 вместо 0 после цикла? – aseeon

+0

В первом случае да, это то, что он делает. Но когда дело доходит до ячеек, у которых уже есть число, отличное от 0, я получаю неправильные значения. – user3870619

ответ

1

Я передал бы номер 1 в x.append(), который должен накапливать один в каждой ячейке.

+0

Хм, похоже, отлично работает. Благодаря! – user3870619