# Battleship: Test Run -- Something wrong with my code. IT doesn't print "guessed already" if i re-use correct coordinates twice

#1

Here is my code:

``````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!"
else:
#print "You missed my battleship!"
# setting list elements of guess_col and guess_row to X
#board[guess_row][guess_col] = "X"
#print_board(board)
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)``````

Now i entered once 2,2 coordinates and i successfully sank the ship. But i was expecting "you guessed that one already" next time on entering the same coordinates... But it didn't print out! instead i got only, you missed my battleship. Can anyone please tell me what am i doing wrong?

#2

As of the Test Run exercise, you will not yet see the message `"You guessed that one already."`.

Each time you run the game, the board is recreated and a location for the ship is chosen randomly. In later exercises, after you have placed the guessing part of the game into a loop, you will see that message when you repeat a previous guess. You will also add code that ends the game when you correctly guess the location.

#3

But if i uncomment this block then i see "you guessed this one already" always!

#4

You should not uncomment those lines of code. You can remove them instead. That is not the correct place in your code to add an `"X"` to the board.

You have this inner `else` block ...

``````    else:
print "You missed my battleship!"
board[guess_row][guess_col] = "X"
print_board(board)``````

That is the block that places an `"X"` on the board when the player misses the battleship.

The original code that you posted runs correctly for the current exercise. You will make improvements to the game in upcoming exercises.

#5

Thankyou very much!

#6