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 () in the top-right of this page. Still can’t find it? Ask it below by hitting the reply button below this post ().
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)
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.
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
given the program otherwise crashes, its certainly useful. There are multiple ways to achieve this. python has a method for it, you could also handle the exception. Google is your friend.
So, could anyone tell me how to respond to special characters? When I run the code and enter characters such as apostrophes and backslashes it returns syntax errors. I understand why, but does anyone have a suggestion to fix this.
Here is my code:
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: "))
# 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)
Hey I’m having a problem with my code. It is the corrected code from the last lesson so should work, but whenever I try to run it it will run Guess Row but not Guess Col. the error message is
Traceback (most recent call last):
** File “python”, line 24, in ** ExecTimeoutException: Program took too long to terminate.
I’ve tried running the code on repl.it, but something similar happens. there’s no error message, but Guess Col: won’t appear on the screen. This is my code if anyone can help I’d really appreciate it.
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))
def random_col(board):
return randint(0, len(board[0]))
ship_row = random_row(board)
ship_col = random_col(board)
print ship_row
print ship_col
guess_row = int(raw_input("Guess Row:4") -1)
guess_col = int(raw_input("Guess Col:2") - 1)
# 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)
The problem seems to be the raw inputs on line 24 and 25
I was running different guesses through it, when I leave it blank I have the same problem. It doesn’t seem to register my second raw input, if I leave the inputs blank or not.
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)
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)
This doesn’t return an error, but instead this:
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
2
5
Guess Row:
I’m not sure what’s going on, but I’m throwing an error even when I try and run the “get solution” code. It’s happened at every step for this lesson. I write the code, run it, throw the error, then click ‘get solution’, check the code against my previously written stuff, verify that i got it correct, try and run the ‘fixed’ version, throw the same timeout error, and then move on to the next section. It’s the only way I’ve been able to move through the lesson. It seems some replies mention that this is a persistent bug, not a problem with the student code, is that correct?
I don’t want to waste my time trying to debug code that is never going to run properly, but I want to make sure I’m correctly learning the material before I skip it and move on…
Without being able to check your code it’s hard to say for certain. raw_input seems prone to errors in the browser and sometimes it is necessary to refresh the page or clear your browser cache to get code to run after raw_input has been used.
When posting code to the forum please format it so it can be read easily- you can use a triple backquote/accent grave to do so, e.g.
` ` `
x = 3
` ` `
Should appear as the following with the correct indents-
x = 3
The most impotant step of any lesson is underatanding the code so if you are 100% clear on every statement and how they tie together in the solution you could consider moving on.