python数生成器可能的无限循环

2024-10-02 00:30:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我在这里看了几个类似的问题,但都没有解决我的问题,而且,我也不是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 = [] 

作为论据。 我希望这不是太含糊。这里到底有什么问题,我该怎么解决?或者我的方法根本不可行?你知道吗


Tags: in列表lenifdefcounternumrow

热门问题