Python数字生成器可能无限循环

时间:2019-01-05 11:45:23

标签: python for-loop while-loop

我在这里浏览了几个类似的问题,但没有一个问题解决了我的问题,此外,我不确定100%是什么问题。

无论如何,我正在尝试在python中生成一个包含9个列表(每个列表包含9个元素)的列表。由于此列表是用于数独生成器的,因此列表需要符合数独谜题的规则。 这是我试图做的:

def generateBord (mtx) : 

    while (len(mtx) < 9) and (len(mtx) != 9):
        newrow = generateRow(mtx)
        mtx.append(newrow)

    return mtx

def generateRow (mtx):
    counter = 0
    row = []
    while counter < 9:

        num = random.randint(1,9)
        idx = len(row)

        if (not(num in row)):
            for x in mtx:
                if (num != x[idx]):
                    row.append(num)
                    counter += 1

    if (len(row) == 9):
        return row

当我尝试运行代码时,它永远不会终止,因此我认为问题是某个地方的无限循环。通过反复试验,我将问题缩小到这一位:

for x in mtx:
    if (num != x[idx]):
        row.append(num)
        counter += 1

但是,我不确定问题到底出在哪里。当调用函数generateBord(mtx)时,我给了它

 mtx = [] 

作为参数。 我希望这不太模糊。这到底是什么问题,我该如何解决?还是我的方法根本不可行?

0 个答案:

没有答案