Not again! Can't get the code to show "You guessed that one already."


#1




I've repeated myself many times but it never showed "You guessed that one already."

I am also curious that in the code: board[guess_row][guess_col]="X" marks X in the board after the elif statement, which means that the code will first test if this location has been guessed and then marks this location. But doesn't that mean that "You guessed that one already." will never show?


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

# Write your code below!
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)


#2

the problem is that we can't introduce everything at once, in one of the next exercises you will introduce a loop, then it is possible to update a field with X, and then in the next run of the loop, elif can evaluate to true


#3

Got it now ! Thanks for you time.


#4