首页 > 解决方案 > 如何用函数重新分配变量?

问题描述

我有一个名为 board 的列表,如下所示:

board = [[0,0,0,0,0,0,0,0,0],
         [0,0,0,0,0,0,0,0,0],
         [0,0,0,0,0,0,0,0,0],
         [0,0,0,0,0,0,0,0,0],
         [0,0,0,0,0,0,0,0,0],
         [0,0,0,0,0,0,0,0,0],
         [0,0,0,0,0,0,0,0,0],
         [0,0,0,0,0,0,0,0,0],
         [0,0,0,0,0,0,0,0,0]]

我编写了一个函数,将这个板输出到控制台,看起来像一个数独板:

def print_board(bo):
    for i in range(len(bo)):
        if i % 3 == 0 and i != 0:
            print("- - - + - - - + - - -")

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

            if j == 8:
                print(bo[i][j])
            else:
                print(str(bo[i][j]) + " ", end="")

print_board(board)

>>>
0 0 0 | 0 0 0 | 0 0 0
0 0 0 | 0 0 0 | 0 0 0
0 0 0 | 0 0 0 | 0 0 0
- - - + - - - + - - -
0 0 0 | 0 0 0 | 0 0 0
0 0 0 | 0 0 0 | 0 0 0
0 0 0 | 0 0 0 | 0 0 0
- - - + - - - + - - -
0 0 0 | 0 0 0 | 0 0 0
0 0 0 | 0 0 0 | 0 0 0
0 0 0 | 0 0 0 | 0 0 0

现在我不想将此板输出到控制台,而是将变量板重新分配给一个字符串,即“转换”板。我该怎么做?

标签: pythonlistfunction

解决方案


只需考虑打印的行为,然后分配一个空字符串,并继续将您打印的任何内容连接到该字符串。

所以对于一个普通print的,在字符串的末尾追加一个换行符,对于一个print with end=""参数,我们不会追加任何东西,也将整数转换为字符串

def print_board(bo):

    s = ''
    for i in range(len(bo)):
        if i % 3 == 0 and i != 0:
            s += "- - - + - - - + - - -\n"

        for j in range(len(bo[0])):
            if j % 3 == 0 and j != 0:
                s += "| "

            if j == 8:
                s += str(bo[i][j])+'\n'
            else:
                s += str(bo[i][j]) + " "

    return s

然后你的输出将是

board = [[0,0,0,0,0,0,0,0,0],
         [0,0,0,0,0,0,0,0,0],
         [0,0,0,0,0,0,0,0,0],
         [0,0,0,0,0,0,0,0,0],
         [0,0,0,0,0,0,0,0,0],
         [0,0,0,0,0,0,0,0,0],
         [0,0,0,0,0,0,0,0,0],
         [0,0,0,0,0,0,0,0,0],
         [0,0,0,0,0,0,0,0,0]]

print(print_board(board))
0 0 0 | 0 0 0 | 0 0 0
0 0 0 | 0 0 0 | 0 0 0
0 0 0 | 0 0 0 | 0 0 0
- - - + - - - + - - -
0 0 0 | 0 0 0 | 0 0 0
0 0 0 | 0 0 0 | 0 0 0
0 0 0 | 0 0 0 | 0 0 0
- - - + - - - + - - -
0 0 0 | 0 0 0 | 0 0 0
0 0 0 | 0 0 0 | 0 0 0
0 0 0 | 0 0 0 | 0 0 0

推荐阅读