List 列表格式化的打印列表
我对python编程相当陌生。我试图从给定的列表创建一个模式。这是我的密码:List 列表格式化的打印列表,list,python-3.x,format,List,Python 3.x,Format,我对python编程相当陌生。我试图从给定的列表创建一个模式。这是我的密码: NONE = '' Column = 7 Rows = 6 def new_game_board() -> [[str]]: board = [] for col in range(BOARD_COLUMNS): board.append([]) for row in range(BOARD_ROWS): board[-1].append(NONE)
NONE = ''
Column = 7
Rows = 6
def new_game_board() -> [[str]]:
board = []
for col in range(BOARD_COLUMNS):
board.append([])
for row in range(BOARD_ROWS):
board[-1].append(NONE)
return board
gb = new_game_board()
for item in gb:
print(item)
董事会如下所示:
['', '', '', '', '', '']
['', '', '', '', '', '']
['', '', '', '', '', '']
['', '', '', '', '', '']
['', '', '', '', '', '']
['', '', '', '', '', '']
['', '', '', '', '', '']
鉴于,它应该是:
1 2 3 4 5 6 7
* * * * * * *
* * * * * * *
* * * * * * *
* * * * * * *
* * * * * * *
* * * * * * *
如何将列表格式化为上面的模式
Columns = 7
Rows = 6
def new_game_board() -> [[str]]:
board = [ ''.join('%3i' % i for i in range(1, 1 + Columns)) ]
board += Rows*[ Columns*' *' ]
return board
gb = new_game_board()
for item in gb:
print(item)
这将产生以下输出:
1 2 3 4 5 6 7
* * * * * * *
* * * * * * *
* * * * * * *
* * * * * * *
* * * * * * *
* * * * * * *
或者:假设我们保留现有的新游戏板功能(拼写错误已修复),并添加打印功能:
NONE = ''
Columns = 7
Rows = 6
def new_game_board() -> [[str]]:
board = []
for row in range(Rows):
board.append([])
for col in range(Columns):
board[-1].append(NONE)
return board
def print_board(board):
print(''.join('%3i' % i for i in range(1, 1 + len(board[0]))))
for item in board:
print(''.join('%3s' % (v if v else '*') for v in item))
gb = new_game_board()
print_board(gb)
这将产生与上述相同的输出。如果将电路板设为类,则可以定义
\uuuu str\uuuu
方法来执行此操作:
class Board(object):
def __init__(self, r, c, val="*"):
self.r = r
self.c = c
self.tiles = [[j+1 for j in range(c)]]
self.tiles += [[val for j in range(c)] for i in range(r)]
def __str__(self):
return "\n".join(" ".join(str(c) for c in self.tiles[r])
for r in range(len(self.tiles)))
现在打印(电路板(6,7))
给出:
1 2 3 4 5 6 7
* * * * * * *
* * * * * * *
* * * * * * *
* * * * * * *
* * * * * * *
* * * * * * *
这种方法使您可以在幕后以用户友好的方式显示列表列表,还允许您将常见的棋盘游戏动作(例如,“将棋子从(r1,c1)移动到(r2,c2)”)定义为实例方法 如果我们不想改变新的游戏板功能,我们可以把它作为一个单独的功能。相反,如果我们想要一个单独的函数,名为print_board,它只打印电路板?