Battleship! - Play it Sam


#1



Hello, everyone! Just looking for a little help on this problem, I can't seem to get it quite right and would greatly appreciate any help someone can offer :slight_smile: Thank you!

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


I keep getting the "Did you remember to print out turn + 1 each turn?" error.


I've moved the section "print ("Turn", turn + 1)" around several times in various different places within the loop, but I just can't seem to get it to work.


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!"
    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:
        print "You missed my battleship!"
        board[guess_row][guess_col] = "X"
        print_board(board)
    print ("Turn", turn + 1)


#2

I'm not sure if this has anything to do with it, but the instructions say to print it at the beginning of each iteration. (The beginning of the for loop) even though it has a comment that says to write it at the bottom.


#3

Hi,

I have run the code and there doesn't seem to have any problem with it. Try to take the parenthesis off the that statement though. Check below:

print "Turn", turn + 1

It should help. Keep me updated. :slight_smile:


#4

Update,

It works now! After removing the parenthesis around the statement as suggested, the code had no problem running.

Thank you so much for all the help, I really appreciate it! :slight_smile:


#5

Glad I could help. :slight_smile:


#6

for x 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!"
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."
        turn += 1
    elif(board[guess_row][guess_col] == "X"):
        print "You guessed that one already."
        turn += 1
    else:
        print "You missed my battleship!"
        board[guess_row][guess_col] = "X"
        print_board(board)
print "Turn", turn + 1

This is still asking me if i printed the turn at the end of each turn. Any thoughts?


#7

@jstoffel24

You have written the turn statement multiple times. Remove the turn += 1 from both the if and elif blocks. Try to run it again.

It will go smooth, but it still won't give you accurate number of turns taken. Last answer will be 5 (which is wrong).

So, indent the .... print "Turn", turn + 1 statement 4 spaces and do it again. Keep me updated. :slight_smile:


#8

for x in range(4):
turn = 0
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."
        print_board(board)
    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)
    turn += 1
    print "Turn", turn + 1

This is still not increasing the turn count. Any ideas?


#9

Please remove the turn+= 1 because that doesn't make any sense when you already have a statement right after that.


#10

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