I'm trying set ships on a Battleship board. The function in the code below should do this with a number of ships and an board (an array of arrays) as arguments. When I run this in Terminal, I get:
[[1, [...]], [1, [...]], [2, [...]]]
What does [...] mean? How to replace [...] with a random integer from 0 to 2 in this output?
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]])
...
means, there's reference cycle.
>>> l = []
>>> l.append(l)
>>> l
[[...]]
See this line:
position = [ship_row,ship_list]
This should be
position = [ship_row,ship_col]
(Same when you re-assign position in the
while` loop)
Later, when you do ship_list.append(position)
, this causes ship_list
to be nested in itself, which Python prints as [...]
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With