Code for battleship doesn't run on my idle?


Replace this line with your code.


from random import randint

board = []

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

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

print "Let's play Battleship!"

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)

Everything from here on should go in your for loop!

Be sure to indent four spaces!

for turn in range(4):
guess_row = int(raw_input("Guess Row:"))
guess_col = int(raw_input("Guess Col:"))

if guess_row == ship_row and guess_col == ship_col:
    print "Congratulations! You sunk my battleship!"
    if (guess_row < 0 or guess_row > 4) or (guess_col < 0          or guess_col > 4):
        print "Oops, that's not even in the ocean."
    elif(board[guess_row][guess_col] == "X"):
        print "You guessed that one already."
        print "You missed my battleship!"
        board[guess_row][guess_col] = "X"
# Print (turn + 1) here!
        print (turn+1)
        if(turn == 3):
            print "Game Over"



Please, what do you mean by "Code for battleship doesn’t run on my idle?". Are you speaking of Codecademy's or external IDE?

If codecademy's, state error pointed to in the interpreter.

Thank you. :slight_smile:


i assume your IDLE runs python3? in that case, raw_input no longer exist and is now input and print required parentheses:


@bayoishola20, IDLE not IDE. IDLE ships standard with python, the moment this is mentioned, it refers to outside codecademy


Yes, I am using Python 3.5.2


if you apply the changes i suggested, it should work


My bad! Thanks for the heads-up! :wink:


no problem, just so you know for next time :slight_smile:


there is syntactical error in the line below:
print " ".join(row)


in python3, the use of print requires parentheses.


SORRY!!! Silly mistake


Now it runs without any error
Thanks for help