Play it Sam


#1



My program runs fine but every time it completes it comes up with this error:
Oops, try again. Did you remember to print out turn + 1 each turn?

I don't know why it is saying this even though I have put the "turn + 1" bit and the program does what it's meant to do.


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


#2

That's a tuple, not a function call (because print is not a function)

You'll end up printing text in this format:

("Turn", 1)

What it's looking for is the turn number on its very own


#3

Thanks this worked. But what if I wanted to use the latest version of python like in Idle, then wouldn't I need to use parenthesis after print?


#4

Yes, in python3 you need parenthesis, but python3 is not backward compatible with python2, so in python2 you shouldn't use parenthesis


#5

Alright Thanks for the help.


#6

Idle is just something that ships with python, it doesn't determine the version of python.
There are two branches that are "the latest", one of them is 2.7.x, the other is 3.x
The former is in maintenance mode


#7

Yeah sorry I meant to say that I was using the latest version of Idle


#8

you didn't understand. Idle is something that ships with all versions of python, you use the latest python version.


#9

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