16/19 "game over" won't print

could you tell me if this is the correct place to put the if statement for printing out “game over”

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):
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 "Turn", turn+1
    if turn == 3:
        print "Game over"
    print_board(board)

Try capitalizing the “O” in “Game over”. I spent a lot of time trying to figure that one out. It shouldn’t matter, but it made the difference for me.

2 Likes

You have it inside the else function. This is where u want it to be

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 "Turn", turn+1
if turn == 3:
    print "Game over"
print_board(board)
3 Likes

Thank you both very much. It worked with what you suggested.

■■■■■■ capital “O”! I’ve spent days debuging the code! Thanks :+1:

Where exactly are we suppose to put the …print “Turn”, turn + 1…because my code is the same but it keeps telling me oops, try again. Did you remember to print out turn + 1 each turn?

It is inside the block of code that is comparing the guess to the position of the ship. It is under the last else: block and indented the same as all the else blocks.
I hope that helps

Thank you! That solved my problem (which I had spent a lot of time on).

thanks …yes, it should be outisde else function to print this “Game Over”…nice catch…

Make sure its not inside of the ‘else’ statement. you probably figured it out already since its been 17 days but if not post the code if that didnt work and ill try and see whats up

for turn in range(4):
guess_row = int(raw_input(“Guess Row:”))
guess_col = int(raw_input(“Guess Col:”))
print “Turn”, turn +1

hello, i do not understand how its work. See my code bellow:

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 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)
  # print turn + 1 here
    print("Turn", turn + 1)

i paste “print(“Turn”, turn + 1)” any plase, and always i see “Did you remember to print out turn + 1 each turn?”. Maybe i don’t understand…
Grand thanks for you help

for loop must be pasted after user request, but i pasted “for loop” before user request