FAQ: Learn Python - Battleship - Test Run

faq

#1

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

FAQs for the Codecademy Python exercise Test Run:

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!


#2

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).


#3

I´m trying to run this code and it only allows me to guess one time, imagine I press 1 in guess_row I would be guessing the place 1x1 but not anything else. What did I do 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)
print ship_row
print ship_col
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 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)

#4

nothing seems wrong, adding a loop to allow multiple guesses is the next exercise, so should just continue with the course


#5

I’m having a similar issue (exact same code as miguelinera), which persists even into the next step where we code in the turn limit, and isn’t resolved by the end of the lesson. The issue is that the console won’t take two raw inputs. Once you input your row selection after being prompted "Guess Row: " and press enter, the console prints the text "Guess Col: " with no option for input, followed by execution of the subsequent code. If you print the guess_row and guess_col variables, they both have the value that was passed into the "Guess Row: " raw input. It seems like the console is passing a single raw input into both variables.


#6

what if you run your code on repl.it? Does it work there?

If not, please share your code


#7

I tried reloading the lesson and the code now works as intended; it also works in repl.it. Not sure what the issue was. Anyway, thanks for the help!


#8

Its a small bug, and on occasion it comes back to hunt codecademy.


#9

Hey, I wonder if it’s possible to make the input ‘1’ count as the first row/column and what should be changed in the code?


#10

given lists are a fundamental part of the python programming language, i wouldn’t fiddle with lists or index concept. Instead, manipulate the user input