+ 4

# Why doesn't this code work? It worked in another learning program online.

#I have written this code myself by the help of another learning program online and it worked, but here it does not. I don't really know how this is wrong. The mistake is said to be at line 7, in the condition of the for loop. 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 for turn in range(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 elif(guess_row < 0 or guess_row > 4) or (guess_col < 0 or guess_col > 4): print "Oops, that's not even in the ocean."

3rd Apr 2017, 8:14 AM
Annerb
+ 10
@Tobi, I believe it's Python 2, once he used raw_input I don't know if in Python 2 it's different about this, but another tip, don't use the same variable name outside and inside a function definition. "board" at line 2 it's not the same "board" at line 6. Remember, variables inside def are locals and don't have any value outside function definition.
3rd Apr 2017, 10:18 AM
LayB
+ 4
You certainly need to use parentheses with the print function. Does the other learning program teach Python 2?
3rd Apr 2017, 8:26 AM
Tob
+ 3
Thanks, I'll take note of that. I don't really know what version they use, nothing was written about that.
3rd Apr 2017, 10:23 AM
Annerb
+ 3
Mmmm, I changed it again, with parentheses... it works better...thx
3rd Apr 2017, 10:35 AM
Annerb