12. Bad Aim - Just to understand


#1



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


The output prints:
Guess Row: 2
Guess Col: 5
1
3
Oops, that's not even in the ocean.
You missed my battleship!
O O O O O
O O O O O
O O O O O
O O O O O
O O O O O
None


2 and 5 are my input. I guess 1 and 3 is where the ship is. I missed it, it prints the message, that's not in the ocean and I missed it. The board is 5 times 5. I assume 5 is a proper number to use, but apparently it's not. If I'd send this to someone to play, they'd be wondering why 5 isn't a proper number. I am a bit familiar with Python now and I guess it's just the it starts with 0 and so 4 is the highest number to use.

But because I have just started with Python, I'll post the code. Maybe I have forgotten something or did something wrong.


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."
    else:
        board[guess_row][guess_col] = "X"
print "You missed my battleship!"
print_board(board)


#2

You are correct but in order to use normal values just add one to your input for both the column and row.


#3

You're thinking right! guesses are from 0-4. (including 0 and 4)
Though you can make them for 1-5 by making some changes in range.
But for this section go with 0-4,at the very end of the section
They have mentioned to build your own version of battleship,There you can add these functionality and can make guesses from 1-5 or make two players version of it etc!


#4

Ideally, the user should be told explicity what inputs are allowed. Write the code to work with standard indices (0..4) but let the user input (1..5), then subtract 1 from the input.

guess_row = int(raw_input("Enter a row [1..5]: ")) - 1

#5

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