To Your Battle Stations!


#1

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

My code is working properly for condition given in task. But I am getting the following error if you do not pass any value for col or raw as shown below. Could you please explain how to handle it?

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

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)

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 < 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"
if turn >= 3:
print "Game Over"
print "Turn", turn + 1
turn = turn + 1

print_board(board)


#2

you could do the following:

while True:
    try:  
        guess_row = int(raw_input("Guess Row:"))
    except ValueError:
        print "invalid try again"
    else:
        break

some of this code hasn't been covered, try except let you catch error messages and deal with them


#3

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