I am new to codecademy and am struggling with the battleship exersice. After inputing my guess, the code checks back with the randomly generated position of the battleship. That check works fine and gives me the correct message (success or not) afterwards. However, the "updated" playing field, where the actual position is marked with an X is somehow not working. It does mark a position, but that position is in no way related to the actual position of the battleship. Yet, codecademy tells me that my code is correct. Please find my complete code below.
Also, I don't quite understand how the
board[guess_row][guess_col]="X" part works. As far as I understand it, the playing field is saved as a list that consists of five lists, which each include 5 values. So in my understanding I would need to use the
guess_row to find the correct list and then use
guess_col within that list to find the correct column. Where am I going wrong here?
I would very much appreciate your help
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_board(board) 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:")) 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: 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] == "X": print "You guessed that one already." else: print "You missed my battleship!" board[guess_row][guess_col]="X" print print_board(board)
this would just be one example of how the X is in very weird places