15/19: Play it, Sam - Error on line 37


#1

Hey, my code is not working. Can anyone help?

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!"
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(5):
    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!"
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"):   #This is line 37.
    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)

Any help would be greatly appreciated.


#2

Your indentation after your for loop is wonky. If you want to use the code again it has to match indentation of the for loop.

Not gonna happen

for turn in range(5):
    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!"

TO

for turn in range(5):
    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!"
    # ect..

#3

correct one !!


#4

harish_prod, it does work but it does not use the battleship code in the if else code. The loop "for turn in range(4)" in your code only asks for your guess four times, but doesn't check whether your guess is a hit, miss, or out of range.

The below works for me. I've indented the four spaces starting from "if guess_row" to print_board(board)