Not Again!


#1



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

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


I'm having a problem with my code. Specifically, how to mark an "X" for the number already guessed. I had to remove that line in a previous excercise, and now I'm trying to stick it back in, along with the "You've guessed that already."

I would appreciate any help. Thank you!


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
board[guess_row][guess_col] = "X"
print_board(board)
# Write your code below!
if guess_row == ship_row and guess_col == ship_col:
    print ("Congratulations!  You sank my battleship")
elif board[guess_row][guess_col] = "X":
    print "You guessed that one already."
else:
    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!")

print print_board(board)


#2

here:

elif board[guess_row][guess_col] = "X":

once a user guessed the ship, the mark becomes an X, so you want to check if maybe the user already guessed this one by checking if the guessed coordinates equal X

this is done with two equal signs

Your game flow also seem to have some trouble, here is some pseudo code:

if user guessed right:
    print you sank my battle shipe
else:
    # this else clause handles the different scenarios for misses
    # first, check if the guess is on the board/in ocean
    if not in ocean:
        print that is not even in the ocean
   # check if the user hasn't already guessed this before
   elif already guessed:
        print you already guessed this one
   # its on board, and not guessed before, inform the user of missing
   else:
       print you missed
       # finally, update the board here

do not update the board, which you do here:

board[guess_row][guess_col] = "X"

before you verified the shot is in the ocean, your game will crash


#3

Thanks! so i should remove the bolded text?
print ship_row
print ship_col
board[guess_row][guess_col] = "X"
print_board(board)

But what I don't understand is this?
once a user guessed the ship, the mark becomes an X, so you want to check if maybe the user already guessed this one by checking if the guessed coordinates equal X

How will the code check if the guess coordinates equal X, when I don't have the bolded text above?


#4

remove? no, you should move it here:

   else:
       print you missed
       # finally, update the board here
       # print board

you will add a loop later, giving the user multiply guesses, that is when elif comes alive

sometimes, you do things, which will have effect later


#5

Thank you, now I understand. If the game repeats itself. the board is marked with an X, for an answer already given. Thank you!


#6

you managed this exercise and everything is clear? That would be great :slight_smile:


#7

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