Danger, Will Robinson!


I am stuck on exercise 11 of Battleship

Traceback (most recent call last):
File "python", line 33, in
TypeError: 'int' object has no attribute 'getitem'

Basically, it is supposed to display the X to where the player missed the battleship.

Replace this line with your code. 
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!"
    print "You missed my battleship!"


okay, your board is stored in a variable called board which is a multi dimensional list. if you have a normal list:

aList = ['a','b','c']

you can use indexes to update items in the list:

aList[0] = 'd'

now your list will look like this:


the same goes for if you have a multi dimensional list like your board:

aList = [['a','b'],['c','d']]

this time you need two indexes:

aList[0][0] = 'e'

which results in:


now think which variable you have, which are the coordinates which need to be set to X


If you look at the hint, it suggested that:
list_name[i][j], where i is an element in the outer list and j is an element in the inner list.

In this case, we could get the X display to be updated by having a single line of code where guess_row and guess_col form the element i and j respectively.

Hope this helps!


@datasurfer20848 @stetim94

Thanks for the information :slight_smile: , however I still do not know what unit to place in the square brackets

guess_row[][] = 'X'
guess_col[][] = 'X'


well, your multi-dimensional list is stored in board, and you might want to set the guessed coordinates (by the user) to X? Which variables hold the guessed coordinates? Maybe you should use them. They are your list indexes


ok cool got it it works now, thanks :slight_smile: , I changed the format also