Battleship Section 16 "Game Over": Code is correct but returns an error message


#1



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


The if statement that checks if number of guesses is exhausted and prints "game over" is what I'm having problems with.
The console prints out "Game over" after the fourth iteration, but I keep getting an error message.

Error message: Oops, try again. Did you add your if statement with the "Game Over" message?


from random import randint

board = []

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

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

print "Let's play Battleship!"
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)
print ship_row
print ship_col

# Everything from here on should go in your for loop!
# Be sure to indent four spaces!

for turn in range(4):
    
    print "Turn", turn
    
    guess_row = int(raw_input("Guess Row:"))
    guess_col = int(raw_input("Guess Col:"))
    
    if guess_row == ship_row and guess_col == ship_col:
        print "Congratulations! You sunk my battleship!"
    else:
        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."
        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)
        turn + 1
    if turn == 3:
        print "Game over"


I moved that particular if statement four spaces again and still get the error message.

            
        print_board(board)
        turn + 1
        if turn == 3:
            print "Game over"

#2


#3

You could try using

for turn in range(4):
    guess_row = int(raw_input("Guess Row:"))
    guess_col = int(raw_input("Guess Col:"))

    if guess_row == ship_row and guess_col == ship_col:
        print "Congratulations! You sunk my battleship!"
    else:
        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."
        elif(board[guess_row][guess_col] == "X"):
            print "You guessed that one already."
        else:
            if turn == 3:
                print "Game Over"
            else:
                print "You missed my battleship!"
                board[guess_row][guess_col] = "X"
            print "Turn", turn + 1
            print_board(board)

#4

Oh wait, NVM, that won't work, will it...


#5

@sw0rdsdance, the d*mn thing worked. Thanks.


#6

@wryhder Swearing just makes people sound so mature, doesn't it?


#7

Also make sure you typed "Game Over" instead of "Game over", that why I stuck!


#8

Yeah, thanks.
I got stuck my first try because I added an exclamation mark.
I'm learning to pay attention to the little details.


#9

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