Ending the Game with Correct Guess


#1



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


I've finished the lesson and my game is functional, but if the player correctly guesses the location within the first three turns, the game doesn't end. It keeps prompting for guesses until the fourth turn.


I tried setting turn == 3 if guessed correctly since that signals the end of the game, but the for loop continues.


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!

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!"
        turn == 3
    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 "Turn", turn + 1
    print_board(board)


#2

Check your first if block, You can see if a person guessed the enemy's co-ordinates, It greets user with "Congratulations! You sunk my battleship!"
but after that,You're comparing 3 with turn , But as you guessed enemies spot right, The loop needs to get halted as It does not make sense to play it ahead?

We have a statement to halt a loop and get out of it called break,

I tried setting turn == 3 if guessed correctly since that signals the end of the game, but the for loop continues.

It does not nothing there (idle code), but Just gets evaluated there as a Boolean value.


#3

Ah, that was really simple. I don't remember learning the break statement, but I just added it and it works perfectly. Thanks!


#4

This is official documentation of python..
break

also check this out..
break examples


#5

Turns out Codecademy was just being glitchy. It's been doing that a lot with me lately. It simply skipped over an exercise I hadn't completed in which it instructs you to add a break to your code.


#6

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