Problem with marking missed spaces as "X"


#1


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

Error code:
Traceback (most recent call last):
File "python", line 41, in
TypeError: 'int' object does not support item assignment

Line 41 bolded below. Seems simple enough that Python expects me to be giving it an Integer rather than a letter X, but I've been away from practice for a while and am not sure why it's expecting this, or what to tweak to get it through. All other outcomes are working fine, which is at least encouraging, but stuck butting my head against the wall on this one.


board = []

for x in range(0, 5):
    board.append(["O"] * 5)

def print_board(board):
    for row in board:
        print " ".join(row)

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

guess_row = int(raw_input("Guess Row:"))
guess_col = int(raw_input("Guess Col:"))


# Write your code below!
if guess_row == ship_row and guess_col == ship_col:
    print("Congratulations!  You sank my battleship!")
else:
    if guess_row not in range(5) or \
    guess_col not in range(5):
        print("Oops, that's not even in the ocean.")
    elif board[guess_row][guess_col] == str("X"):
        print("You guessed that one already.")
    **else:**
**        print("You missed my battleship!")**
**        guess_row[guess_col-1] ="X"**
print_board(board)
Replace this line with your code.


#2

Good news/Bad news...

Fixed the problem (tracked down some successful code and saw discrepancy)...
Not really sure why I fixed the problem (but that's a simple matter of refreshing my syntax...).

Line 41 needed to read
board[guess_row-1][guess_col-1] = "X"


#3

That fixed the problem as your original code just has
[guess_r][guess_c]="x"

That doesn't actually change anything. By putting board in front of all that, we are saying that in the 2 D list "board" the element with those indices is turned to an x.

eg.
if we guessed 2,2

original code : [2][2]="x" this doesn't make any sense......What is [2][2]?

but with the fix we have

board[2][2]="x" aka the content of board at [2][2] is being changed to an "x".


#4

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