Bad Aim


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)


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 :
print "You missed my battleship!"
board[guess_row][guess_col] = "X"
if guess_row in range(5) or guess_col in range(5):
print "Oops, that's not even in the ocean."
else :
print "Congratulations! You sank my battleship!"
board [guess_row] [guess_col] = "X"
print_board (board)

I have two question here
1) In last condition of else statement, what do we have to do
2) code works fro defined range value, (range (5)) but not for outside range.

I got error like this:
Traceback (most recent call last):
File "python", line 33, in
IndexError: list assignment index out of range

Oops, try again. Your code looks a bit off. Check the Hint if you need help! Your code threw the following error: list assignment index out of range

Please help.


To fix the problem, all you have to do stay within 0-4 in order for the function to work properly. If you go out of range (for example, anything >= 5 will give you an error like you got already.

Now, if you keep on progressing in the module, your question for number 2 will be answered.


move the if statement above the else. Use an elif, Its important that this check is done before the else

elif guess_row not in range(6) or guess_col not in range(6):
    print "Oops, that's not even in the ocean."
else : 
    print "You missed my battleship!"
    #make sure to subtract one from the guess to map correctly to the list, since the list starts at 0
    board [guess_row - 1] [guess_col -1] = "X"
    print_board (board)


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