Battleship 13.Not Again


#1



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

Hi All,

Please help me with this error message

File "python", line 39
elif board[guess_row][guess_col] == "X":
^
SyntaxError: invalid syntax


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[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!"
else:
    print "You missed my battleship!"
    board[guess_row][guess_col] = 'X'
    print_board(board)
if guess_row not in range(5) or guess_col not in range(5):
       print "Oops, that's not even in the ocean."
else:
    print "You missed my battleship!"
elif board[guess_row][guess_col] == "X":
    print "you guessed that one already"


#2

Check the line above; elif statements always go before else statements


#3

and from a design point of view, it would make more sense to check if the guess is on the board (in range) and not guessed before, before reaching to the conclusion that the battle ship is missed (print "You missed my battleship!")


#4

Thank you its working now.

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[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!"
else:
    print "You missed my battleship!"
    board[guess_row][guess_col] = 'X'
    print_board(board)
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."

#5

Thank you its working now.

That's great! However, I would take heed of @stetim94's advice and check if the guess_row or guess_col are in range before checking if they hit the ship (after all, there's no point in checking if they hit if they're not even in the correct range).


#6

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