Python有效数独棋盘检查器9x9验证方块,但不显示输出结果

2024-06-11 12:14:41 发布

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

我一直在做一项任务,验证一个已经完成的数独游戏,看看它是否正确完成。我已经能够定义函数,并能够将代码划分为不同的部分,以允许代码正常流动。我检查了行、列和子矩阵方块。数独游戏是通过一个文本文件提供的,在运行程序时可以读取该文本文件。当我运行程序时,唯一显示的是数独板。我该怎么做才能证明谜题是正确的 有效吗

def main():
 fl =('sudoku board.txt')
 grids =(is_puzzle(fl))



def is_Puzzle(fl):
with open(fl,'r') as files:
    grids = []
    lines = files.readlines()
    for line in lines:
         board = line.split()
         wholenums = [int(items) for items in board]
         print (wholenums)
         grids.append(wholenums)
    return grids




def is_puzzle(fl):


if check_rows(fl) and check_columns(fl) and check_squares(fl):
    return True
else:
    return False

def compare_all(fl):
compare = [1,2,3,4,5,6,7,8,9]
return sorted(lst) `== compare


def check_rows(fl):
for i in grids:
    if not grids.compare_all(i):
        return False
return True




def check_columns(fl):
for i in range(len(fl)):
    contain = []
    for j in range(len(fl[0])):
        contain.append(fl[j][i])
    if not grids.compare_all(hold):
        return False


def check_squares(fl):
for i in range(0, 9, 3):
    for j in range(0, 9, 3):
        nums = fl[i][j:j+3]+fl[i+1][j:j+3]+fl[i+2][j:j+3]
        if not grids.compare_all(nums):
            return False
return True


main()

Tags: inboardfalseforreturnifisdef
1条回答
网友
1楼 · 发布于 2024-06-11 12:14:41

这是您的代码修复,并按预期执行。除了一些调整外,还必须检查is_puzzle()函数的返回值

def main():
    fl = 'sudoku board.txt'
    grids = (is_Puzzle(fl))
    print()
    if is_puzzle(grids):
        print('The sudoku is correct!')
    else:
        print('The sudoku is wrong...')

def is_Puzzle(fl):
    with open(fl, 'r') as files:
        grids = []
        lines = files.readlines()
        for line in lines:
            board = line.split()
            wholenums = [int(items) for items in board]
            print(wholenums)
            grids.append(wholenums)
        return grids

def is_puzzle(fl):
    if check_rows(fl) and check_columns(fl) and check_squares(fl):
        return True
    else:
        return False

def compare_all(fl):
    compare = [1, 2, 3, 4, 5, 6, 7, 8, 9]
    return sorted(fl) == compare

def check_rows(fl):
    for i in fl:
        if not compare_all(i):
            return False
    return True

def check_columns(fl):
    for i in range(len(fl)):
        contain = []
        for j in range(len(fl[0])):
            contain.append(fl[j][i])
        if not compare_all(contain):
            return False
    return True

def check_squares(fl):
    for i in range(0, 9, 3):
        for j in range(0, 9, 3):
            nums = fl[i][j:j + 3] + fl[i + 1][j:j + 3] + fl[i + 2][j:j + 3]
            if not compare_all(nums):
                return False
    return True

main()

相关问题 更多 >