# Input Problem!

#1

If input is empty , program print “That wasn’t a number! Try again!s” and ask to input again.

When I run code and as first input press enter(empty input) i get:

Traceback (most recent call last):
File “python”, line 33, in
NameError: name ‘guess_row’ is not defined

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)
print ship_row
print ship_col

# Everything from here on should go in your for loop!
# Be sure to indent four spaces!
for turn in range(4):
try:
guess_row = int(raw_input("Guess Row: "))
guess_col = int(raw_input("Guess Col: "))
except ValueError:
print ("That wasn't a number! Try again!s")
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!"
board[guess_row][guess_col] = "X"
# Print (turn + 1) here!
print "Turn", turn + 1
print_board(board)

if turn == 3:
print "Game Over"

When I run code and as first input press enter i get:

Traceback (most recent call last):
File “python”, line 33, in
NameError: name ‘guess_row’ is not defined

#2

Hi @anafresha,

When an empty string is entered at the first prompt, guess_row is undefined, therefore you need to either terminate the program or allow the user to provide input again, without the program’s attempting to execute line 33.

EDIT (January 6, 2018):

Be aware that you doing extra work that is not required by the exercise instructions, in your checking for an empty input string or one that contains non-digits.

#3

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