Bad Aim - can pass the lesson, but doesn't seem to print correctly


Hello, I am having some problems with this lesson.

I can pass the lesson, but if I make guess_row or guess_col(or both) equal to 5, then it prints "Oops, that's not even in the ocean."

Is 5 not within the range? Could someone please explain why it does this? What is wrong with the code?

Thanks for the help, if there is any.

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)

print "Try to sink the ship!"

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


range starts at the first argument you pass and goes up to but does not include the second argument. So range(0,5) is 0,1,2,3,4.


Hello, based on what you said, I changed range to range(0, 6), so it should go up to but not including 6. But I still get the same result as before. Is there more to it than just changing range(0, 5) to range(0, 6)?


Your code before was working as intended. You created 5 rows and columns for your game board, they are just numbered 0,1,2,3,4(there are 5 total). So when you chose row or column 5, the game tells you it's not in the ocean because there are only 5 valid choices(0,1,2,3,4).


Thank you for helping! I understand what happened now. Before I was getting an error like "List assignment index out of range" but that seems to be cleared up. Thanks again!


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