The loop doesn't stop. Even if the data type is integer, it keeps asking for a different input.
I wanted to add a simple data test function to the game which would ask player to choose the numbers of a row and a colomn one more time if the data type is different from integer.
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) - 1) def data_test(): a = raw_input("Guess Row:") b = raw_input("Guess Col:") if type(a) == int and type(b) == int: guess_row = int(a) guess_col = int(b) elif type(a) != int or type(b) != int: print "Are you sure you know how to play this game? Try to guess THE NUMBER of a row and THE NUMBER of a colomn in. Other characters ain\'t gonna work. Maybe try one more time?" data_test() ship_row = random_row(board) ship_col = random_col(board) print ship_row print ship_col for turn in range(4): data_test() print "Turn", turn + 1 if guess_row == ship_row and guess_col == ship_col: print "Congratulations! You sunk my battleship!" break 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) if turn == 3: print "Game Over"