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