Hello, I have a question about Python Battleship! exercise. When we print the board in the terminal, how does it happen that all "O" rows appear just one under another? When I try doing it on my own computer, they are just printed one after another in a row, what's the code for structuring them just like in the exercise?

Replace this line with your code. 
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!"

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!"
        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."
            print "You missed my battleship!"
            board[guess_row][guess_col] = "X"
    # Print (turn + 1) here!
    print "Turn", turn + 1
    if turn == 3:
        print "Game Over"


but you are not going to tell us what those questions are?


sorry, I pressed the wrong button. Now I've finished my question


its because of your print_board function, it prints each row on a separate line

if you run this code on your computer, that should also happen


Thank you! Also, I have a question with this particular line:
board[guess_row][guess_col] = "X"
doesn't it make sense to rewrite as "board[guess_row - 1][guess_col - 1] = "X""? Because it's more convenient to guess from 1 to 5, than from 0 to 4....


that is possible, but then subtract one from the user input directly, this way your range() is still validates correctly if shot is in on the board


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