user2864740提供的快速和肮脏的方法将解决问题。这是我第一个想到的,当我看到的代码,因为它是:
print(board[0] , "|" , board[1] , "|" , board[2], \
到:
print("", board[0] , "|" , board[1] , "|" , board[2], \
我真的不建议格式化它变得非常难以阅读的这种方式。这可以更容易阅读和维护。您可以使用Python的格式,然后使用%
作为参数提供数据。
所以我使用类似:
boardsep = "-" * 10
boardline = "%s | %s | %s\n%s"
print(boardline % (board[0], board[1], board[2], boardsep))
print(boardline % (board[3], board[4], board[5], boardsep))
print(boardline % (board[6], board[7], board[8], boardsep))
的boardsep
是采取什么是串并复制它多次(在这种情况下的10倍)只是一个方便的方法。由于您打印boardline
的方式与每行相同,我将它分配给一个变量,以便可以重复使用。您可以阅读这些print formatting docs以更好地了解参数和格式字符串如何协同工作。
mgilson也提出了一个很好的解决方案(我upvoted它),并让我再次看看OP的问题。对于Python3来说,你可以做些事情,例如字符串,切片和扩展的新格式方法。
boardsep = '-' * 10
boardline = '{0:^3}|{1:^3}|{2:^3}\n{sep}''
print (boardline.format(*board[0:3], sep=boardsep))
print (boardline.format(*board[3:6], sep=boardsep))
print (boardline.format(*board[6:9], sep=boardsep))
但是,你可以进一步,并将其减少到一个复杂的线。如果你的基础知识的透彻理解,上面一个可以试试这个:
print ((('{:^3}|{:^3}|{:^3}\n'+('-'*10)+'\n') * 3).format(*board))
如果你要打印出生成板看起来会像这样展开的格式说明:
{:^3} | {:^ 3} | {:^ 3} \ n ---------- \ N {:^ 3} | {:^ 3} | {:^ 3} \ N-- -------- \ n {:^ 3} | {:^ 3} \ n ---------- \ n
由于OP没有注意到输出中的问题,我将提供最后一次编辑代码,这些代码更具动态性,可以放入扩展的f中联合来生成电路板。
linesepchar = '-'
colsepchar = '|'
numrows = 3
numcols = 3
fieldwidth = 3
linesep = '\n{linesepchar:{linesepchar}^{linewidth}}\n'
fieldspec = '{:^{fieldwidth}}'
lineformat = (fieldspec+'{colsepchar}')*(numcols-1)+fieldspec
boardstr = (((lineformat+linesep)*(numrows-1)+lineformat).format(\
*board,linesepchar=linesepchar, colsepchar=colsepchar, \
fieldwidth=fieldwidth, linewidth=((fieldwidth+1)*numcols-1)))
几分钟阅读[格式函数](https://docs.python.org/3.3/library/functions.html#format)将帮助很多 – wnnmaw 2014-09-05 20:38:40
从[文档](https:/ /docs.python.org/3/library/functions.html#print):“所有非关键字参数都会转换为像str()那样的字符串并写入流中,并由sep分隔,然后以end结尾。”尝试[str.format()](https://docs.python.org/2/library/string.html#format-string-syntax)。 – Celeo 2014-09-05 20:39:50
作弊:'print(“,board [0],..)'。但如果不依靠此分隔符自动插入,会更好(稍后更容易处理)。 – user2864740 2014-09-05 20:42:22