我正在尝试制作一个6列7行的迷你连接4板
我正在寻找这样的输出:
1 2 3 4 5 6
7 8 9 10 11 12
13 14 15 16 17 18
19 20 21 22 23 24
25 26 27 28 29 30
等等到42.
我想在一个列表中创建它。我开始走这条正确的轨道
board = []
for i in range (1,43):
board.append(i)
我理解我需要的所有数字都在那里,但我不知道如何分解列表,以便每6个数字打印一个新行,就像我展示的那样。
答案 0 :(得分:1)
为了让你的电路板看起来漂亮而不仅仅是正确的,你也需要一些格式化。
您可以使用以下内容获取两者:
board = []
for i in range(1,43):
board.append(i)
print('{:>4}'.format(i), end='')
if i % 6 == 0:
print()
# 1 2 3 4 5 6
# 7 8 9 10 11 12
# 13 14 15 16 17 18
# 19 20 21 22 23 24
# 25 26 27 28 29 30
# 31 32 33 34 35 36
# 37 38 39 40 41 42
正如您所看到的,我通过指定print()
来抑制end=''
的默认结束字符,即新行。相反,只要i % 6 == 0
(%
顺便修改),就会通过调用空print()
来打印换行符。至于格式化,您可以查看the documentation。
为了使一切更加用户友好,我会把它包装在一个函数
中def build_board(cols, rows, sp=2):
board = []
l = len(str(cols * rows)) + sp
for i in range(1, cols * rows + 1):
board.append(i)
print('{0:>{1}}'.format(i, l), end='')
if i % cols == 0:
print()
return board
build_board(8, 17, 3)
# 1 2 3 4 5 6 7 8
# 9 10 11 12 13 14 15 16
# 17 18 19 20 21 22 23 24
# 25 26 27 28 29 30 31 32
# ...
# 121 122 123 124 125 126 127 128
# 129 130 131 132 133 134 135 136
答案 1 :(得分:1)
board = []
for i in range(1,43):
board.append(i)
if i % 6 == 0:
print(board[i-6:i])
答案 2 :(得分:0)
您在寻找二维板吗?如果是这样,你可以使用列表理解:
board = [[6*j+i for i in range(1,7)] for j in range(7)]
并打印内容(使用python3):
for row in board:
for column in row:
print(column, end=' ')
print()
1 2 3 4 5 6
7 8 9 10 11 12
13 14 15 16 17 18
19 20 21 22 23 24
25 26 27 28 29 30
31 32 33 34 35 36
37 38 39 40 41 42
答案 3 :(得分:0)
这是另一种方法。
import numpy as np
# convert 1D vector into 2D array
data = np.array(board).reshape(6, 7)
print '\n'.join(''.join(str(col)+' ' for col in row) for row in data)
答案 4 :(得分:0)
如果你正在使用python 2.x,你可以这样做,基于EV。 Kounis解决方案:
board = []
for i in range (1,43):
board.append(i)
if i%6 == 0 :print board[i-6:]
如果已经创建了Board并且您只需要打印它,您可以这样做:
for i in range(1,8) :print board[:i*6][(i-1)*6:]
(董事会[25:]表示没有25个第一个值的董事会,和 board [:25]表示董事会的25个第一个值