17: A Real Win


#1



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


I have been working on CodeAcadamey all day and think my brain is the at the point where it is missing the obvious now. Something is wrong with my for loop, but what? getting syntax error: break outside of loop.

Thanks for any help, in advance!


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(0, 4):
    print "Turn", turn + 1
    if turn == 3:
        print "Game Over"
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_board(board)


#2

do you agree with that being a problem?
What does break do? When is it allowed? When does it make sense?
Where do you use break? Is that in a loop? Should it be? Which loop? Where does that loop end? Where does that loop start? Is your break in that loop?


#3

Thanks for the prompting questions, I appreciate that more than just providing the answers. I guess it was my brain just being tired, to miss something that obvious. I will post up my finished code once I finish playing around with it.


#4

If you get a chance I would appreciate any advice on improving this code, it does all the functions I need but i'm just looking for advice. Thanks in advance.

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)

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

#5

Not much to say about that code


#6

It is a perfect code


#7

Thanks for the support, I love the community here extremely helpful!


#8

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