My code works and allows me to move on to next lesson. However, I'm not ready to move on because it isn't implementing the string message "You guessed that one already." when that condition is met. After reviewing my code I'm pretty sure I know why this is the case. It's because the elif is running before the else below it, which is the condition that sets the location to 'X', isn't it? So it's asking else if the guess location is X before it knows that it will become X.
If I'm correct about this, what is an efficient way to fix it? Or should I leave it as is and move on where it will eventually be fixed in a later lesson?
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) - 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 # Write your code below! if guess_row == ship_row and guess_col == ship_col: print 'Congratulations! You sank my battleship!' else: ship_row = random_row(board) #I've copied/pasted this code from above ship_col = random_col(board) #for testing purposes, otherwise the elif guess_row = int(raw_input("Guess Row:")) #I've added in this lesson guess_col = int(raw_input("Guess Col:")) #would never be met. 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)