# Battleship!: list index out of range

#1

Everytime I enter a number > 4 in the input I receive the following error message, but it only started happening in this exercise. Before, the output was "Oops, that's not even in the ocean.", as it should be. What do I doooo? Please, help.

Oops, try again. Your code looks a bit off. Feel free to peek back at earlier exercises if you need help! Your code threw teh following error: list index out of range

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

``````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!"
elif board[guess_row][guess_col] == "X":
print "You guessed that one already."
else:
if guess_row not in range(5) or guess_col not in range(5):
print "Oops, that's not even in the ocean."
else:
print "You missed my battleship!"
board[guess_row][guess_col] = "X"
print_board(board)``````

#2

In Exercise 13: Not Again!, you added this ...

``````elif board[guess_row][guess_col] == "X":
print "You guessed that one already."``````

Consider placing it somewhere else within the program, so that it checks whether the guess lies within the range of the board before it attempts to check whether the user has guessed that location already. Otherwise, as you have discovered, a guess out of range will result in this ...

``IndexError: list index out of range``

#3

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.