簡體   English   中英

代碼處於無限循環中,我不知道為什么

[英]Code is in Infinite Loop and I don't know Why

我的代碼在以下幾行中陷入無限循環:

   while i <= len(mylist):
        if mylist[i][j] == number:

我已經遍歷了代碼,但是仍然不知道如何解決它。 我要解決的問題如下:

定義一個過程check_sudoku,該過程將代表nxn數獨難題解決方案的列表的平方列表作為輸入,如果輸入是有效的數獨平方,則返回布爾True,否則返回布爾False。

有效的數獨正方形滿足以下兩個屬性:

  1. 正方形的每一列都包含一次從1到n的整數。

  2. 平方的每一行都包含一次從1到n的整數。

    您可以假定輸入為正方形,並且至少包含一行和一列。

我編寫的以下代碼應僅檢查行,而不檢查列。 我們將不勝感激關於如何解決它以及我做錯了什么的任何建議,因此我將理解而不會再犯錯誤。

def check_sudoku(mylist):
    i = 0
    j = 0
    number = len(mylist)
    while i <= len(mylist):
        if mylist[i][j] == number:
            number = number - 1
            j = 0
            if number == 0:
                i = i + 1
                number = len(mylist)
            else:
                j = j + 1
                if number not in list:
                    break
                    return False
    return True



check_sudoku([[1, 2, 3, 4],
              [1, 3, 1, 4],
              [3, 1, 2, 3],
              [4, 4, 4, 4]])

我將以您提供的列表為例來說明該功能。

發生了什么事:

number = len(mylist)

數= 4

while 0 <= 4
    if 1 == 4: // This condition will never be true and therefore doesn't run the code below it

while將再次運行,並且將發生相同的情況。

如果你把這行

        print("i: " + str(i) + " j: " + str(j))

在While循環開始的地方,您會意識到i和j永遠不會增加,它一直處於第一位。

您必須在較大的if語句后增加i和j

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM