试图得到一个好的格式输出,简单的Python

试图得到一个好的格式输出,简单的Python,python,Python,这是我的密码。我的问题是输出不是5x5网格。我是否错过了另一个循环?(我知道我可能也可以使用列表理解法) 谢谢。如果您想要5x5网格,您可以加入结果 board = [] for integer in range(1,6): board.append("O") print(str(board)*5) In [22]: board = [['O'] * 5 for _ in range(5)] In [23]: print('\n'.join(''.join(row) for row

这是我的密码。我的问题是输出不是5x5网格。我是否错过了另一个循环?(我知道我可能也可以使用列表理解法)


谢谢。

如果您想要
5x5
网格,您可以
加入
结果

board = []
for integer in range(1,6):
    board.append("O")
print(str(board)*5)
In [22]: board = [['O'] * 5 for _ in range(5)]

In [23]: print('\n'.join(''.join(row) for row in board))
OOOOO
OOOOO
OOOOO
OOOOO
OOOOO
例如:

'\n'.join([' '.join(board)]*5)
要获得所需的输出,可以执行以下操作

>>> board = ['0']*5
>>> print '\n'.join([' '.join(board)]*5)
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

如果您想要一个
5x5
网格,您可以
join
结果

In [22]: board = [['O'] * 5 for _ in range(5)]

In [23]: print('\n'.join(''.join(row) for row in board))
OOOOO
OOOOO
OOOOO
OOOOO
OOOOO
例如:

'\n'.join([' '.join(board)]*5)
要获得所需的输出,可以执行以下操作

>>> board = ['0']*5
>>> print '\n'.join([' '.join(board)]*5)
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

你错过了新词:

>>> board = [['0'] for _ in range(5)]
>>> board
[['0'], ['0'], ['0'], ['0'], ['0']]
>>> print '\n'.join(str(board) for _ in range(5))
[['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']]

你错过了新词:

>>> board = [['0'] for _ in range(5)]
>>> board
[['0'], ['0'], ['0'], ['0'], ['0']]
>>> print '\n'.join(str(board) for _ in range(5))
[['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']]

不应使用JOIN将数据打印到列中,因为当数据中的字符数可变时,这些列将不会对齐。改用字符串格式

 print(('0'*6+'\n')*5)
字符串格式化程序中的数字4表示字符之间的最小间距

现在,如果您创建一个具有可变长度字符的列表,如下所示,您可以打印漂亮的列:

boardLst = [[0 for i in range(1,6)]]*5
for board in boardLst:
    print "  %4d"*len(board) % tuple(board), "\n"

 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 

不应使用JOIN将数据打印到列中,因为当数据中的字符数可变时,这些列将不会对齐。改用字符串格式

 print(('0'*6+'\n')*5)
字符串格式化程序中的数字4表示字符之间的最小间距

现在,如果您创建一个具有可变长度字符的列表,如下所示,您可以打印漂亮的列:

boardLst = [[0 for i in range(1,6)]]*5
for board in boardLst:
    print "  %4d"*len(board) % tuple(board), "\n"

 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 

我实际上是想得到五行“[['O'],['O'],['O'],['O'],['O'],['O']]”谢谢!board变量的创建是否算作列表理解?是<代码>板在列表中创建。然后,我在
join
中使用一个生成器表达式,for中的“u”有什么特别的意思吗?或者只是您对迭代器的选择?@algebr'u'只是一个惯例,表示我需要一个变量,但我不会将其用于任何事情。我实际上是在尝试获取五行“[['O'],['O'],['O'],['O'],['O'],['O']]”谢谢!board变量的创建是否算作列表理解?是<代码>板在列表中创建。然后我在
join
中使用一个生成器表达式,for中的“u”是否有什么特殊的含义,或者只是您对迭代器的选择?@algebr'u'只是一个约定,表示我在这里需要一个变量,但我不会将它用于任何事情。