首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Python类打印Sudoku板?

如何使用Python类打印Sudoku板?
EN

Stack Overflow用户
提问于 2022-05-08 08:49:19
回答 2查看 240关注 0票数 1

正如我的帖子标题所说,我正试图创建一个类来解决数独游戏,我想用OOP风格和if name == "main":打印一个板

我的输出应该如下所示:

到目前为止,这是我的代码:

代码语言:javascript
复制
class Sudoku:
    def __init__(self):
        self.board = [
            [7, 8, 0, 4, 0, 0, 1, 2, 0],
            [6, 0, 0, 0, 7, 5, 0, 0, 9],
            [0, 0, 0, 6, 0, 1, 0, 7, 8],
            [0, 0, 7, 0, 4, 0, 2, 6, 0],
            [0, 0, 1, 0, 5, 0, 9, 3, 0],
            [9, 0, 4, 0, 6, 0, 0, 0, 5],
            [0, 7, 0, 3, 0, 0, 0, 1, 2],
            [1, 2, 0, 0, 0, 7, 4, 0, 0],
            [0, 4, 9, 2, 0, 6, 0, 0, 7]
        ]

    def print_board(self, board) -> None:
        for row in range(len(board)):
            if row % 3 == 0 and row != 0:
                print("- - - - - - - - - - - - - ")

        for col in range(len(board[0])):
            if col % 3 == 0 and col != 0:
                print(" | ", end="")

            if col == 8:
                print(board[row][col])
            else:
                print(str(board[row][col]) + " ", end="")

    # Not sure if we need string representation of the board
    # def __str__(self):
    #     return f"{self.board}"


if __name__ == "__main__":
    sudoku = Sudoku()
    sudoku.print_board(sudoku.board)

下面是我从上面的代码中得到的输出:

提前谢谢你。

EN

Stack Overflow用户

回答已采纳

发布于 2022-05-08 09:04:48

问题是“列”循环不是嵌套在“行”循环中的,您的代码应该如下所示:

代码语言:javascript
复制
class Sudoku:
def __init__(self):
    self.board = [
        [7, 8, 0, 4, 0, 0, 1, 2, 0],
        [6, 0, 0, 0, 7, 5, 0, 0, 9],
        [0, 0, 0, 6, 0, 1, 0, 7, 8],
        [0, 0, 7, 0, 4, 0, 2, 6, 0],
        [0, 0, 1, 0, 5, 0, 9, 3, 0],
        [9, 0, 4, 0, 6, 0, 0, 0, 5],
        [0, 7, 0, 3, 0, 0, 0, 1, 2],
        [1, 2, 0, 0, 0, 7, 4, 0, 0],
        [0, 4, 9, 2, 0, 6, 0, 0, 7]
    ]

def print_board(self, board) -> None:
    for row in range(len(board)):
        if row % 3 == 0 and row != 0:
            print("- - - - - - - - - - - - - ")
        for col in range(len(board[0])):
            if col % 3 == 0 and col != 0:
                print(" | ", end="")

            if col == 8:
                print(board[row][col])
            else:
                print(str(board[row][col]) + " ", end="")

if __name__ == "__main__":
    sudoku = Sudoku()
    sudoku.print_board(sudoku.board)
票数 3
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72159405

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档