如何在列表

时间:2016-04-19 08:27:00

标签: python python-3.x

我再次需要你......

这是我的代码:

def import_sudoku():
    with open("sudoku.txt") as f:
        lines = f.read()

sudoku = [[character for character in line if not character == " "] for line in lines.split("\n")]

return sudoku

sudoku = import_sudoku()
print(sudoku)
def grid_index(grid, value):
    for i, row in enumerate(grid):
        for j, cell in enumerate(row):
            if cell == value:
                return i, j
    return -1, -1
print("Coords:",grid_index(sudoku, "."))


def solve_next_unsolved(sudoku):
    coords = grid_index(sudoku, ".")
    value_to_input = "3"

    for cell in sudoku[0]:
        if value_to_input == cell:
        break
    else:
        sudoku[coords[0]][coords[0]] = value_to_input



print(sudoku)

我的sudoku.txt ......

.3. ... ...
..8 39. 6..
5.1 2.. 49.
.7. 6.. ...
2.. ... .4.
... 5.3 98.
... ... 15.
... ..7 ..9
4.. .1. 3..

所以,我正在与第一行合作。我不明白为什么一个3可以存储在我的行中...事实上,当我在第一行找到3时打破时间,它不应该打破时间并结束循环...? ?

最后一件事:如果你看到我的个人资料,这是我在同一个对象中的第三个帖子......(数独解算器......)可以保留这个主题以解决我的所有问题而不是每次都创建一个主题有问题......?

如果有人想帮助我,但不仅仅是在这里(如果你有时间等等),我的Skype:lakyrorr

非常抱歉给您带来不便。

1 个答案:

答案 0 :(得分:1)

你的其他人属于错误的块:缩进使它属于for循环,而不是你想要的if语句:

for cell in sudoku[0]:
    if value_to_input == cell:
        break
    else:
        sudoku[coords[0]][coords[0]] = value_to_input

您可以检查

,而不是循环遍历列表元素
if value_to_input in row:
    print "Duplicate entry"
    break

回答您的一般问题:stackoverflow的工作方式是处理小的个别问题。我会讨论一个论坛来讨论更大的编程项目,因为同样的人会不时地再看一下你的代码。