A Real Win


#1

Hi I actually passed this exercise but I noticed something wrong happening with the code when I tested it. In this part, the game is supposed to give you your 4 turns and then if you haven't won by the 4th turn, the game should say game over and then end. However, with where I put the break in my code, the game automatically stops after the second turn for some reason, regardless of whether you have won or not. I think I have the break in the wrong place. This is how it currently looks:

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

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!"
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)
    if turn == 3:
        print "Game Over"
    
for turn in range(4):
    print "Turn", turn + 1
    guess_row = int(raw_input("Guess Row:"))
    guess_col = int(raw_input("Guess Col:"))
    break

I thought I would have to put the break after the if statement with the condition that you win, but when I do that it gives me an indentation error saying that the break if not in the loop. So I'm really not sure where to put the break.

Thanks in advance for you help ~

`


#2

look at this comments:

# Everything from here on should go in your for loop!
# Be sure to indent four spaces!

they tell you where the loop should be, so the user get multiply guesses and each guess is handled correctly


#3

OHHH I see now. Thank you that worked.


#4

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