代码之家  ›  专栏  ›  技术社区  ›  A.S.J

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

  •  0
  • A.S.J  · 技术社区  · 6 年前

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

    无论如何,我试图在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 回复  |  直到 6 年前