如何将值放在for循环的迭代列表的后面?

时间:2019-03-30 12:43:09

标签: python list for-loop while-loop

我正在尝试编写一些代码,以找到数独难题的解决方案。如果某个已解决的单元格与代码当前正在解决的单元格发生冲突,我想清除该已解决的单元格并将其放在要迭代的列表的末尾,然后重试当前的单元格。换句话说,我要删除一个冲突,推迟解决它,然后先解决当前问题。

到目前为止,这是我写的:

def solvepuzzle(grid, input_coordinates):
unsolved_cells = input_coordinates
solved_cells = []

while unsolved_cells:
    for row in unsolved_cells:
        solve(row)

        if solve(row) is True:
           print('Successful')
           unsolved_cells.pop(row)

        if solve(row) is False:
            print('removing conflicting cell..')
            conflicter = find_conflict(grid, row)
            grid = reset_board(grid, conflicter)
            unsolved_cells.append(conflicter)
            unsolved_cells.insert(0, row)

    if not unsolved_cells:
        print('Operation successful.')

if unsolved_cells:
    print('Operation unsuccessful.')
    print('To be made: ', unsolved_cells)

return grid

但是,这无法正常工作。 input_coordinates / unsolved_cells的顺序被弄乱了,并跳过了一步,因此代替了1,2,3,4,它只解决了1,3。另外,我似乎无法使插入工作。这样的想法是,在消除冲突之后,如果循环失败,则for循环将再次尝试,但是顺序似乎是随机的。

如何改善代码?

0 个答案:

没有答案