Entering nothing for guess_row/col?


#1



https://www.codecademy.com/en/courses/python-beginner-en-4XuFm/2/4?curriculum_id=4f89dab3d788890003000096


How do I get my code to redirect to take another guess when nothing is entered? I keep getting this error:

Traceback (most recent call last):
File "python", line 27, in
ValueError: invalid literal for int() with base 10: ''

I have tried entering another if statement that indicates:
if guess_row=='' or guess_col=='':
print "You must guess!"

...but this doesn't seem to work either. Any tips would be greatly appreciated!


When a missed shot is entered, or a shot is off the board, a statement is printed as such and the game continues instead of bringing up an error... that's what I'm looking to have also if the player simply presses enter without putting in a number or anything.


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[0]) - 1)

ship_row = random_row(board)
ship_col = random_col(board)

for turn in range(1,5):
    
    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!"
        print "Turn", turn+1
        print "Game Over"
        break
    else:
        if turn==4:
            print "Game Over"
            break
        elif (guess_row < 0 or guess_row > 4) or (guess_col < 0 or guess_col > 4):
            print "Oops, that's not even in the ocean."
            print "Turn", turn+1
        elif(board[guess_row][guess_col] == "X"):
            print "You guessed that one already."
            print "Turn", turn+1
        else:
            print "You missed my battleship!"
            print "Turn", turn+1
            board[guess_row][guess_col] = "X"
            print_board(board)


#2

the problem is the conversion to integer:

int(raw_input("Guess Row:"))

without including code you haven't learned, what you could do, is first get user input:

raw_input("Guess Row:")

then check if its empty, if not, cast it to integer

do you think you can code this?


#3

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.