"list index out of range" error, but correct result


#1



https://www.codecademy.com/en/courses/python-beginner-en-4XuFm/1/5?curriculum_id=4f89dab3d788890003000096


When I enter a column/row of 6 or greater, I get the error "Traceback (most recent call last):
File "python", line 38, in
IndexError: list index out of range"

However, my code also prints "Oops, that's not even in the ocean." like it's supposed to.
So my question is, is my code actually wrong?


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

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


#2

this line:

board[guess_row][guess_col] = "X"

is wrongly indented, it should be part of the else clause, you only want to update the board if the shot is on the board and not already guessed


#3

Oh I see! Thank you so much!


#4