2017-10-18 46 views
0

我試圖用列表創建遊戲板,但是當我打印板時,它會打印太多列表。創建遊戲板時出現問題:打印太多列表

from random import randint 
import pprint 

class Gameboard: 
    def __init__(self, rows, columns): 
     self._rows = rows 
     self._columns = columns 
     self._board = [] 
     for i in range(rows): 
      row = [0] * columns 
      self._board.append(row) 

    def drawBoard(self): 
     for i in range(self._rows): 
      for j in range(self._columns): 
       pprint.pprint(self._board) 

主程序:

from gameboard import Gameboard 
import pprint 

def main(): 
    myObject = Gameboard(7, 7) 
    myObject.drawBoard() 
main() 

我的目標是創建一個板,包括(在這種情況下)7只列出一個名單于7個元素。 當我現在運行程序時,它會打印大約7 * 49的列表或其他東西。我必須改變什麼,只打印出一個列表中有7個列表?

+0

這是python2或3? – BurnsBA

+0

您的繪圖板遍歷'_rows * _columns'並打印'_rows'行數(列) – BurnsBA

+0

@BurnsBA它是python 3 –

回答

0

你可以使用內嵌的for循環產生"[]"字符串列表,然後遍歷該打印功能,你需要可是很多次,像下面:

import pprint 

for i in range(7): 
    pprint.pprint(["[]" for j in range(7)]) 

清單上使用.join()你也可以將列表中的每個元素連接成一個長字符串,這看起來更好。

import pprint 

for i in range(7): 
    pprint.pprint(' '.join(["[]" for j in range(7)])) 
+0

@danny_blue這是否解決了您遇到的問題,或者您是否仍然需要將其列入1列表中,並列出7個列表? –

+0

我認爲這將被批准,我不得不離開過夜,但我會countinue與工作,明天檢查出來 –

0

保持簡單:

def drawBoard(self): 
    print(*self._board, sep='\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, 0, 0, 0] 
[0, 0, 0, 0, 0, 0, 0] 
[0, 0, 0, 0, 0, 0, 0] 
[0, 0, 0, 0, 0, 0, 0]