2017-11-30 4 views
0

視覚的に魅力的な魔法のリストを印刷するのに問題があります。 リストの例は2Dリストを印刷して、各リストが空白で新しい行にあるようにする方法(「」または[]なし)

[["-", "-", "-", "-"],["-", "-", "-", "-"],["-", "-", "-", "-"]] 

(文字はすべてが必ずしも同じではありません)ですが、私はprintrangeleninsertappendpop以外の任意の関数を使用せずに、それを印刷する必要があり、辞書や地図を使用することはできません。また、図書館を輸入したり、リスト内包表記を使用することはできません。私は順番にしたい:

- - - - 
- - - - 
- - - - 

私が試した:

def print_board(board): 
    for i in board: 
     row = board[i] 
     for r in row: 
      print(*row[r], "\n") 
+3

は「印刷」が許可されていますか? –

+3

あなたはこれまで何をしていますか? – NendoTaka

+2

"範囲、len、insert、append、pop"以外の関数を使わずに印刷する必要があります:良いPythonコードが必要なときに、あなたがしなければならないことはまったくありません... –

答えて

2

あなたは近いですが、どのようfor i in <list>作品あなたは誤解します。反復変数は、インデックスではなくリスト要素を取得します。

また、row[r](インデックスがrの場合)はリストではなく1つの文字列になるため、*row[r]で解凍する必要はありません。

デフォルトで改行で出力を終了するので、コールに"\n"を含める必要はありません。これを防ぐには、end=""オプションで出力を上書きする必要があります。

for row in board: 
    for col in row: 
     print(col, end=" ") # print each element separated by space 
    print() # Add newline 
1
board = [["-", "-", "-", "-"],["-", "-", "-", "-"],["-", "-", "-", "-"]] 

for row in board: 
    print(*row) 

は、これが最も簡単な方法ですが、開梱引数に依存している(つまり*row前)。あなたが何らかの理由でそれを使用することができないならば、あなたがより良いという名前の変数で

for row in board: 
    for cell in row: 
     print(cell, end=' ') 
    print() 
0

同じ結果を達成するためにprintにキーワード引数を使用することができ、これはより良い理解につながるmigh:

def print_board(board): 
    for innerList in board: 
     for elem in innerList: 
      print(elem + " ", end ='') # no \n after print 
     print("") # now \n 


b = [["-"]*4]*4  
print_board(b) 
print(b) 

出力を:

- - - - 
- - - - 
- - - - 
- - - - 

[['-', '-', '-', '-'], ['-', '-', '-', '-'], ['-', '-', '-', '-'], ['-', '-', '-', '-']] 
関連する問題