A Real Win - code outside loop?


#1


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

It is giving the error that 'break' is outside loop (python, line 33). However it is indented inside the loop.
Can someone explain what is wrong with my code?
Thanks in advance :relaxed:


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!"
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)
print ship_row
print ship_col

# Everything from here on should go in your for loop!
# Be sure to indent four spaces!
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!"
    break
else:
    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."
    else:
        print "You missed my battleship!"
        board[guess_row][guess_col] = "X"
    # Print (turn + 1) here!
    print_board(board)
    
for turn in range(4):
    print "Turn " , str(turn + 1)
    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!"
    break
else:
    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."
    else:
        print "You missed my battleship!"
        board[guess_row][guess_col] = "X"
    if turn == 3:
        print "Game Over"
    # Print (turn + 1) here!
    print_board(board)


#2

Your if and else are outside the loop....they are not indented under it.


#3

It is still saying that my line 33 'break' is outside the loop


#4

Make sure your break is indented under your if statement. Anything that is nested in something needs to be indented under it.


#5

It is indented under my if statement


#6

After looking at it again, your if and else statements aren't indented under your loop. Also, keep in mind that else is always used as the last conditional. if -> elif -> else. You can have multiple elifs. if and else are like the breads of the burger. This also applies to nested ones.


#7

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