Test Run Debugging Error


I am currently stuck trying to debug on Test Run in the Battleship! exercise. When trying to get the program to print "Oops, that's not even in the ocean." I get the following error and I am not sure what exactly is going on.

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

I am having trouble figuring out what is wrong with the code and what can be done to fix it. Any help would be appreciated!

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)


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

# Write your code below!
if guess_row == ship_row and guess_col == ship_col:
    print "Congratulations! You sank my battleship!"
elif board[guess_row][guess_col] == 'X':
    print "You guessed that one already."
    if guess_row not in range(5) or guess_col not in range(5):
        print "Oops, that's not even in the ocean."
        print "You missed my battleship!"
        board[guess_row][guess_col] = 'X'


Notwithstanding a winning condition, a range condition would logically follow before any other considerations.


if you guess something which is outside the ocean this line becomes a problem:

elif board[guess_row][guess_col] == 'X':

it will give a index error, you should check as first if the guess is on the board


Ergo, range condition.


Awesome, thank you for the feedback. That got it worked out.


Appreciate the feedback!