Hi. For the Battleship Exercise, see my code below:
It is working fine, however, I just want my code to accept that if a user/player enters a string or a null value, it wouldn't error out to:
Traceback (most recent call last):
File "python", line 32, in
ValueError: invalid literal for int() with base 10: 's'
I want my code to be able to catch this. Probably be under "Oops, that's not even in the ocean." part.
I've tried adding an elif wherein when guess_row or guess_col != int, but it does not work.
Any inputs would be appreciated and thank you in advance!
Replace this line with your code. 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) 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!" break else: if (guess_row < len(board) or guess_row > len(board)) or (guess_col < len(board) or guess_col > len(board)): print "Oops, that's not even in the ocean." print_board(board) if turn == 3: print "Game Over" elif(board[guess_row][guess_col] == "X"): print "You guessed that one already." print_board(board) if turn == 3: print "Game Over" else: print "You missed my battleship!" board[guess_row][guess_col] = "X" print_board(board) if turn == 3: print "Game Over" # Print (turn + 1) here! print "Turn", turn + 1