14/19 question


So I have made a code that’s running, and gotten all the green checks but there’s still an issue. When I guess for example row 3 and col 2, the “X” appears on row 4 and col 3. I guess there is a - 1 missing somewhere in my code but I can’t locate it. This is my 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) - 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: "))

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.”
elif guess_row == “X” or guess_col == “X”:
print “You guessed that one already.”
print “You missed my battleship!”
board[guess_row][guess_col] = “X”

Where did I make the mistake?


well, lists are zero indexed based. So if you want to compensate for human behaviour (starting at 1), you should subtract one from the user input


ah great, putting -1 after the guess_row and guess_col worked, thanks!


Then its of course easier to manipulate the user input, manipulating the list which are built into the python programming language would be a challenge.


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