2013-10-21 24 views
5

Tôi đang thử đặt tàu trên bảng Battleship. Hàm trong đoạn mã dưới đây sẽ làm điều này với một số tàu và một bảng (một mảng các mảng) làm đối số. Khi tôi chạy điều này trong Terminal, tôi nhận được:[...] có nghĩa là đầu ra trong python?

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

[...] có nghĩa là gì? Làm thế nào để thay thế [...] với một số nguyên ngẫu nhiên từ 0 đến 2 trong đầu ra này?

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

Trả lời

3

... có nghĩa là có chu trình tham chiếu.

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

Bằng "chu trình tham chiếu", anh ấy có nghĩa là danh sách chứa tham chiếu đến chính nó. – kindall

+2

Không chỉ cho chính nó, nhưng đối với bất kỳ đối tượng nào đã được in bên trong cuộc gọi đệ quy, hãy xem xét ví dụ: 'a = []; b = [a]; a.append (b); c = [a]; in c' – lejlot

2

Xem dòng này:

position = [ship_row,ship_list] 

này cần được

position = [ship_row,ship_col] 

(Tương tự khi bạn lại gán position in the while` loop)

Sau đó, khi bạn làm ship_list.append(position) , điều này gây ra ship_list để được lồng trong chính nó, mà Python in là [...].

Các vấn đề liên quan