Test Run: please help


#1



from random import randint

board = []

for x in range(0, 5):
    board.append(["O"] * 5)

def print_board(board):
    for row in board:
        print " ".join(row)

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)
guess_row = int(raw_input("Guess Row:"))
guess_col = int(raw_input("Guess Col:"))

print ship_row
print ship_col

# Write your code below!
if guess_row == ship_row and guess_col == ship_col:
    print "Congratulations! You sank my battleship"
    
else:
    print "You missed my battleship!"
    board[guess_row][guess_col] = "X"
    print_board(board)

    if guess_row not in range(5) or \
    guess_col not in range(5):
           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!"

my code

im having trouble figuring out why sometimes my code works but not always im pretty sure the problem lies in the elif statement, this bit....

elif board[guess_row][guess_col] == "X":
        print "You guessed that one already."

i feel like this elif statement should be in the first if statement, but if i put it there it overrides the

else:
    print "You missed my battleship!"
    board[guess_row][guess_col] = "X"
    print_board(board)

part of my code. Any pointers would be greatly appreciated but documentation would be better as im a noob and some explanations go straight over my head. laymen terms help the most lol


#2

What's the problem? Index out of range?

Think about why that wouldn't happen. You should only be using the user-input as indexes after having confirmed that they're valid, and if you're using them anyway then you've got the order of actions wrong


#3

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