Battleship for real python 3.5.2


#1


Hey, I've just done the Battleship exercise and I'd like to save it as a python file. The problem is, it looks like codecademy has a bit different syntax from python 3.5.2. For instance, raw_input has to be changed to input. I just get this error: "Syntax Error". That's not really helpful so I was hoping someone knows what is wrong. I'd also like to know why is this as it is? Is the Python course built on a outdated version?
Thanks in advance.

"""
Unfinished Battleship
Codecademy syntax
Needs debugging
"""

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)


for turn in range(4):
    print "Turn", turn + 1
    guess_row = int(input("Guess Row:"))
    guess_col = int(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!"
            board[guess_row][guess_col] = "X"
        if turn==3:
            print "Game Over"
        print_board(board)


#2

in python3, print has become a function call, so it requires parentheses

There is still a lot of python2 code in the world (some libraries are python2 only, it happens sometimes)

So no, its not hopefully outdated, but codecademy blog leaves room to suggest that python3 course might come


#3

Do you happen to know of any other differences, specifically in this code? Thanks.


#4

print statement has become function call:

# python2
print "hello world"
# python 3
print("hello world")

and raw_input vs input


#5

Ok, if that's all this will be a quick fix. Thank you!


#6

It works now! Thank you!


#7

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