[英]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到n的整數。
平方的每一行都包含一次從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.