you didn’t follow the instructions correctly:
Your new if should go under the else that handles all of the incorrect guesses, but outside of any of the nested conditions. This is because it doesn’t matter why the guess is wrong; after 4 wrong guesses, the game is over.
else: # else that handles incorrect guesses
# nested if condition
if (guess_row < 0 or guess_row > 4) or (guess_col < 0 or guess_col > 4):
print "Oops, that's not even in the ocean."
_**print "Game Over"**_
# nested elif condition
elif(board[guess_row][guess_col] == "X"):
print "You guessed that one already."
# nested else condition
print "You missed my battleship!"
board[guess_row][guess_col] = "X"
print "Game Over"
see comments i added, you add the
if turn == 3 into the nested else condition, not the else clause that handles incorrect guesses, which is why your code is giving unexpected behaviour.