Test Run!


#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:
    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!"
        board[guess_row][guess_col] = "X"
        print_board(board)


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

1) My code does not shows " You guessed that one already."
2) "X" should be on the same row and col which i typed but its not showing on the same row and col instead it shows on +1 row and col..for example=
row = 3 and col =4, its shows in console window as row =4 and col = 5

1)whenever I repeat the same row and col it shows "you missed my battleship" instead of "you guessed that one already".
2) i think board[guess_row][guess_col] = "X" should be placed somewhere above the else statement. I tried and it works but then others codes shows error.

Replace this line with your code.


#2

make sense? There is no loop of sorts, so the code will only run once. Once the code finished running, everything is reset

also make sense? lists are zero indexed based (counting start at zero) and you start counting at 1. You will need to play with this if you want to change this behavior. (outside the scope of the exercise)

already covered this one?

the placing is fine? The order of which your games handles it is good


#3

Thanks for the reply...now my games works perfectly but still i am a little confused as from the player's side.
I know that lists are zero indexed but the actual player does not. So if he types row =3 and col = 4, the "X" should be placed according to his row and col and not according to me.


#4

You could do this?

guess_row = int(raw_input("Guess Row:"))
guess_col = int(raw_input("Guess Col:"))
if guess_row in range(1,6) or guess_col in range(1,6):
    guess_row -= 1
    guess_col -= 1
    if guess_row == ship_row and guess_col == ship_col:
        print "Congratulations! You sank my battleship!"
    # rest of your code
else:
    print "That is not even in the Ocean"

Why i am coding this for you? You can do this yourself


#5

if guess_row == ship_row and guess_col == ship_col:
print "Congratulations! You sank my battleship!"
else:
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-1][guess_col - 1] \
== "X":
print "You guessed that one already."
else:
print "You missed my battleship!"

board[guess_row-1][guess_col-1] = "X"
print print_board(board)


#6

You have a question? Code is nice, but pointless without content


#7

thanks...:slight_smile:


#8

tahnks...:slight_smile:


#9