18. To your Battle Stations! Data_type function doesn't work


<Below this line, add a link to the EXACT exercise that you are stuck at.>

<In what way does your code behave incorrectly? Include ALL error messages.>
The loop doesn’t stop. Even if the data type is integer, it keeps asking for a different input.

<What do you expect to happen instead?>
Hello everyone!

I wanted to add a simple data test function to the game which would ask player to choose the numbers of a row and a colomn one more time if the data type is different from integer.


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 “Let’s play Battleship!”

def random_row(board):
return randint(0, len(board) - 1)

def random_col(board):
return randint(0, len(board[0]) - 1)

def data_test():
a = raw_input(“Guess Row:”)
b = raw_input(“Guess Col:”)
if type(a) == int and type(b) == int:
guess_row = int(a)
guess_col = int(b)
elif type(a) != int or type(b) != int:
print “Are you sure you know how to play this game? Try to guess THE NUMBER of a row and THE NUMBER of a colomn in. Other characters ain’t gonna work. Maybe try one more time?”

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
if guess_row == ship_row and guess_col == ship_col:
print “Congratulations! You sunk my battleship!”
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.”
print “You missed my battleship!”
board[guess_row][guess_col] = “X”
if turn == 3:
print “Game Over”

<do not remove the three backticks above>

Save that for your own time. Not in the unit and not in Q&A. What you are doing is exploratory and should be discussed in the Corner Bar, AFTER you succesfully complete this unit and pass. Not before.

Stick to instructions for best results. Don’t try to improve upon the code for your own indulgence until you are through with this unit.

Hey mtf,

Sorry for making a mistake and thank you for an advice. I will try to
finish the course first and in the future I will check two times the right
section before I post something.

1 Like

raw_input returns a string. To test of it is an int you can use if a.isdigit():

Or you could use a try except:

    guess_row = int(a)
except ValueError:

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