ValueError: invalid literal for int() with base 10: ‘SCT’"

platform_issue

#1

I am getting a error " Traceback (most recent call last): File “python”, line 28, in <module> ValueError: invalid literal for int() with base 10: ‘SCT’"
for the code:
guess_row = int(raw_input("Guess Row: "))
guess_col = int(raw_input("Guess Col: "))

The error doesn’t show up every turn that I run either. What does the error mean?


FAQ: Learn Python - Battleship - Play It, Sam
#2

its a bug, the lessons enters a string ('SCT') into the prompt of raw_input.

you could use the get solution button or hard code the values:

guess_row = 3
guess_col = 2

to get around the issue.


#4

I am also getting the same error .How to solve it?


#5

i covered that in my reply?


#6

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

for turn in range(4):
print “Turn”, turn + 1

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 < 0 or guess_row > 4) or (guess_col < 0 or guess_col > 4):
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)
if turn == 3:
print “Game Over”

correct me please


#7

@galintech I had the same issue on occasions but it was intermittent. As such I just ignored it. It is’nt an issue with the code you have written it is with the set up of the lesson, as the person above said…

my code is here:

script.py
from random import randint

board = []

for x in range(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)


# Everything from here on should go in your for loop!
for turn in range (0,4):
  print "Turn", turn + 1  
  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 sunk my battleship!"
    break
  else:
      if (guess_row < 0 or guess_row > 4) or (guess_col < 0 or guess_col > 4):
        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!"
      if turn == 3:
        print "Game Over"
      else:
        board[guess_row][guess_col] = "X"
        print (turn + 1)
        print_board(board)`

I can’t work out how to avoid an error if the guess is outside the battlefield?
If I move the code in the final else condition further up it somehow impacts the ability to guess.

What am I doing wrong?