FAQ: Learn Python - Battleship - Hide

This community-built FAQ covers the “Hide” exercise in Codecademy’s lessons on Python.

FAQs for the Codecademy Python exercise Hide:

Join the Discussion. We Want to Hear From You!

Have a new question or can answer someone else’s? Reply (reply) to an existing thread!

Agree with a comment or answer? Like (like) to up-vote the contribution!

Need broader help or resources about Python in general? Go here!

Want to take the conversation in a totally different direction? Join our wider discussions.

Learn more about how to use this guide.

Found a bug? Report it!

Have a question about your account, billing, Pro, or Pro Intensive? Reach out to our support team!

None of the above? Find out where to ask other questions here!

Other FAQs

The following are links to additional questions that our community has asked about this exercise:

  • This list will contain other frequently asked questions that aren’t quite as popular as the ones above.
  • Currently there have not been enough questions asked and answered about this exercise to populate this FAQ section.
  • This FAQ is built and maintained by you, the Codecademy community – help yourself and other learners like you by contributing!

Not seeing your question? It may still have been asked before – try (search) in the top-right of this page. Still can’t find it? Ask it below by hitting the reply button below this post (reply).

In the instructions it says we should use ‘board_in’, so I did in the previous parts of this Battleship exercise.
That all went well, but now suddenly, when I come at part 7/19, the ‘board_in’ is replaced by you to ‘board’.

I have looked further, as well as clicked the ‘solutions’ several times, and the whole ‘board_in’ argument has disappeared from the code, however in the instructions it still says ‘board_in’.

This is so confusing!
Why has it changed?

it should be board_in, i will pass this along so the solutions get fixed. Thank you for reporting

2 Likes

Why are two functions needed? Don’t they accomplish the same thing?

1 Like

for now they do, but whatever the dimensions of the board change and the board is no longer a square?

1 Like

Good point. I modified mine in the later Extra Credit lesson to have a random number function that takes an argument for the range of the random number and have variables defining the board width and height, but it required changing other code too.

which is what you try to prevent!

1 Like

Why do you need to minus 1 from the randint function
why is the code like this:
return randint(0, len(board_in)-1)

and not just like this:
return randint(0, len(board_in))

1 Like

because len() starts counting at one, while lists are zero indexed based. So a list which has 5 elements (so length 5), has 4 as it highest index (all indices: 0, 1, 2, 3 and 4)

4 Likes

The problem with the instructions on the Hide lesson in Battleship has not been resolved. The instruction call for board_in but it is replaced by board.

it still haven’t been cahnged

After testing it out,
len in len(board_in) - 1
seems to only respond to the changes in range(0,5), or in other words the number of lists (rows) that are displayed.
How would len account for changes in number of “O”'s per list (columns)?

For example, if I wanted to change the board to 5 rows and 4 columns?

my_lst = [[1,2,3], [4,5,6], [7,8,9], [10,11,12]]

print(len(my_lst))

print(my_lst[0])
print(my_lst[1])

print(len(my_lst[0]))

Output:

4
[1, 2, 3]
[4, 5, 6]
3
1 Like

Nope, still hasn’t been changed and it’s August now…

I noticed that as well and the fix seemed fairly easy to just ask for in the instructions instead of having the two functions pointlessly be made which seemed like an odd ask.

The number of rows is sort of just the length of the board list so that is already going to work no matter what the board looks like. The only change needed was to take the length of any row and set that to a variable for the number of columns in the board.

def random_col(board_in):
numofcols=0
for row in board_in:
numofcols=len(row)
return randint(0,numofcols-1)

why minus 1 to len(board)?

page 7

Yea, why could this be? Any thoughts?

len() starts counting at one, while lists are zero indexed based. If we don’t compensate for this difference, we risk getting errors.

I followed the instructions and my intuition and… got the exercise right.
Codecademy says I’ve done the exercise right.

The only sad problem is… I do not know, why the code works.

Could anybody please explain,

  1. why isn’t Python mad at me, when I’m using undefined variable “board_in”?;
  2. how to read the random column and row indexes, which I have printed to the console?

Thank you in advance

parameters act as placeholder. Parameters get there values from the arguments you provide at function call.

calling a function requires parentheses. you call print() correctly (which is also a function), yet when attempt to call random_row (or coll) you forget the ()