2017-10-18 6 views
0

J'essaie de créer un plateau de jeu en utilisant des listes, mais lorsque j'imprime le tableau, il imprime beaucoup trop de listes.Problèmes lors de la création du plateau de jeu: imprime trop de listes

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) 

Programme principal:

from gameboard import Gameboard 
import pprint 

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

Mon but est de créer un conseil d'administration qui se compose de (dans ce cas) 7 listes avec 7 éléments dans une liste. Lorsque je lance le programme maintenant, il imprime environ 7 * 49 listes ou quelque chose. Que dois-je changer pour imprimer seulement une liste avec 7 listes à l'intérieur?

+0

est ce python2 ou 3? – BurnsBA

+0

Votre drawBoard parcourt _rows * _columns' et affiche le nombre _rows' de lignes (de colonnes) – BurnsBA

+0

@BurnsBA C'est python 3 –

Répondre

0

Vous pouvez utiliser une ligne pour la boucle pour générer une liste de "[]" chaînes, puis itérer cette fonction d'impression cependant plusieurs fois vous avez besoin, comme ci-dessous:

import pprint 

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

En utilisant .join() sur la liste vous pouvez également concaténer chaque élément de la liste en une longue chaîne, ce qui est sans doute meilleur.

import pprint 

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

@danny_blue Est-ce que cela résout le problème que vous aviez ou avez-vous encore besoin d'être 1 liste avec 7 listes à l'intérieur? –

+0

Je pense que cela sera approuvé, je devais partir pour la nuit, mais je vais continuer à travailler avec la tâche et vérifier demain –

0

Keep it simple:

def drawBoard(self): 
    print(*self._board, sep='\n') 

SORTIE

[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]