2013-10-21 19 views
5

私は戦艦ボードにセットされた船を試しています。以下のコードの関数は、多数の船とボード(配列の配列)を引数としてこれを行う必要があります。ターミナルでこれを実行すると、私は次のようになります。[...]はPythonの出力として何を意味しますか?

[[1, [...]], [1, [...]], [2, [...]]] 

[...]とはどういう意味ですか? [...]をこの出力の0から2までのランダムな整数に置き換える方法は?

from random import randint 

def print_board(board): 
    for row in board: 
     print " ".join(row) 
def random_row(board): 
    return randint(0, len(board) - 1) 
def random_col(board): 
    return randint(0, len(board[0]) - 1) 

def set_the_ships(num_ships,board): 
    ship_list = [] 
    for i in range(num_ships): 
     ship_row = random_row(board) 
     ship_col = random_col(board)  
     position = [ship_row,ship_list] 
     for j in range(i - 1): 
      while (position[0] == ship_list[j][0] and position[1] == ship_list[j][1]): 
       ship_row = random_row(board) 
       ship_col = random_col(board)  
       position = [ship_row,ship_list] 
     ship_list.append(position) 
    return ship_list 

print set_the_ships(3,[[0,0,0],[0,0,0],[0,0,0]]) 

答えて

3

という意味で参考サイクルがあります。

>>> l = [] 
>>> l.append(l) 
>>> l 
[[...]] 
+0

"参照サイクル"とは、リストに自身への参照が含まれていることを意味します。 – kindall

+2

それ自身ではなく、再帰呼び出しの中で既に印刷されているオブジェクトには、例えば次のように考えてください。 'a = []; b = [a]; a.append(b); c = [a];プリントc – lejlot

2

この行を参照してください:あなたがship_list.append(position)を行う際

position = [ship_row,ship_list] 

これは、

その後

position = [ship_row,ship_col] 

(while`ループと同じあなたはときに再割り当てposition in the)でなければなりませんこれにより、ship_listがネストされます。これは、Pythonがとして出力します。

関連する問題