"Battleship 11. Danger, Will Robinson!" - file out of range


#1


Battleship 11. Danger, Will Robinson!!

Traceback (most recent call last):
File "python", line 32, in
IndexError: list assignment index out of range

I expected it to print out another grid with an "X" where the guess was. All the forums suggest the code should work however mines does not


from random import randint

board = []

for x in range(0, 5):
    board.append(["O"] * 5)

def print_board(board):
    for row in board:
        print " ".join(row)

print_board(board)

def random_row(board):
    return randint(0, len(board) - 1)

def random_col(board):
    return randint(0, len(board[0]) - 1)

ship_row = random_row(board)
ship_col = random_col(board)
guess_row = int(raw_input("Guess Row:"))
guess_col = int(raw_input("Guess Col:"))

print ship_row
print ship_col

if guess_row == ship_row and guess_col == ship_col:
    print "Congratulations! You sank my battleship!"
 
else:
    board[guess_row] = 'X'
    board[guess_col] = 'X'
    print_board(board)
    print "You missed my battleship!"


#2

Your code does work, when prompted for the col and row to guess, make sure to enter a valid value (for example 2)


#3

What worked for me was that i combined the two in your last else statement
board[guess_row] = 'X'
board[guess_col] = 'X'
into the same line instead of having them separate. Then i didn't have my print_board(board) in the else statement. If that makes sense? If you need me to i could try to better explain it.


#4

Thank you. I understand what you mean :slightly_smiling:slightly_smiling: