如何在python中使用整数生成网格?

2024-04-25 15:03:44 发布

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

我有以下代码,它必须根据用户指定的大小打印出带有数字的电路板(例如3表示3 x 3板):

n = d * d
    count = 1
    board = []
    for i in range(d):
        for j in range(d):
            number = n - count
            if number >= 0 :
                tile = number
                board.append[tile]
            else:
                exit(1)
            count += 1
            print(board)

我需要把这个放在一个网格里,这样电路板的尺寸是3 x 3,像这样:

^{pr2}$

我想做的是把每一行都列在一个列表中(所以[8 7 6][5 4。。等),然后在网格中打印这些列表。为了做到这一点,我想我必须创建一个空列表,然后将数字添加到该列表中,在每一个d之后停止,这样每个列表都是指定的长度。在

我现在有了一个我想要的数字列表,但是我如何将它们分成一个网格呢?在

我真的很感谢你的帮助!在


Tags: 代码用户inboard网格number列表for
3条回答

您可以将线路板创建为嵌套列表,其中每个列表都是线路板中的一行。然后在末尾连接它们:

def get_board(n):
    # get the numbers
    numbers = [i for i in range(n * n)]

    # create the nested list representing the board
    rev_board = [numbers[i:i+n][::-1] for i in range(0, len(numbers), n)]

    return rev_board

board = get_board(3)

# print each list(row) of the board, from end to start
print('\n'.join(' '.join(str(x) for x in row) for row in reversed(board)))

哪些输出:

^{pr2}$

如果要对齐4或5大小网格的数字,只需使用%d格式说明符:

board = get_board(4)

for line in reversed(board):
    for number in line:
        print("%2d" % number, end = " ")
    print()

它提供了一个对齐的网格:

15 14 13 12 
11 10  9  8 
 7  6  5  4 
 3  2  1  0 

这里有一个函数,它获取正方形大小并打印它。在

如果你需要解释,尽管问。在

def my_print_square(d):
    all_ = d * d

    x = list(range(all_))
    x.sort(reverse=True)  # the x value is a list with all value sorted reverse.
    i=0
    while i < all_:
       print(" ".join(map(str, x[i:i+d])))
       i += d


my_print_square(5)
24 23 22 21 20
19 18 17 16 15
14 13 12 11 10
9 8 7 6 5
4 3 2 1 0

默认情况下,print()函数在要打印的字符串末尾添加“\n”。您可以通过传递end参数来覆盖它。在

print(string, end=" ")

在本例中,我们添加了空格而不是换行符。 然后我们必须在每行末尾用print()手动打印换行符。在

^{pr2}$

编辑:通过计算出数字的最大长度,我们可以调整它们的打印格式。这应该支持任何尺寸的电路板。在

相关问题 更多 >