codecademy战舰项目语法错误

时间:2013-01-06 10:13:43

标签: python

我通过codeacademy网站学习python。 现在我正试图编写战舰项目,我面临一个问题: 我的代码是:

import random

board = []

for x in range(0,5):
  board.append(["O"] * 5)

def print_board(board):
  for row in board:
    print " ".join(row)

print_board(board)

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

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

ship_row = random_row(board)
ship_col = random_col(board)
guess_row = input("Guess Row:")
guess_col = input("Guess Col:")

print ship_row
print ship_col

if (guess_row == ship_row and guess_col == ship_col):
    print "Congratulations! You sank my battleship!"
else:
    if((guess_row < 0) or (guess_row > (len(board) -1) or (guess_col < 0) or (guess_col> (len(board) -1)):
        print "Oops, that’s not even in the ocean."
    else:
        print "You missed my battleship!"
        guess_row = "X"
        guess_col = "X"
        print_board(board)
    if board[guess_row][guess_col] == "X":
        print "You guessed that one already."

但它会返回此错误:

    if((guess_row < 0) or (guess_row > (len(board) -1) or (guess_col < 0) or (guess_col> (len(board) -1)):
                                                                                                         ^
SyntaxError: invalid syntax

你能帮我解决这个问题吗?

先谢谢你们

3 个答案:

答案 0 :(得分:4)

你有9个开场但只有7个结束括号。

我个人会删除大部分内容:

 if guess_row < 0 or guess_row >= len(board) or guess_col < 0 or guess_col >= len(board):

或者,更好的是:

 if not (0 <= guess_row < len(board)) or not (0 <= guess_col < len(board)):

这里,not之后的两对括号不是必需的,但IMO提高了可读性。如果你不同意,请随意放弃它们。

代码还存在其他一些问题。

以下内容:

    guess_row = "X"
    guess_col = "X"

应该阅读

    board[guess_row][guess_col] = "X"

同样,if board[guess_row][guess_col] == "X":检查应该在为board[guess_row][guess_col]"X"设置guess_rowguess_col之前或之后进行。

答案 1 :(得分:0)

你在冒号之前错过了)(编辑:你也错过了另一个)。你的行应该是:

if((guess_row < 0) or (guess_row > (len(board) -1)) or (guess_col < 0) or (guess_col> (len(board) -1))):

答案 2 :(得分:0)

使用此:

if(guess_row < 0) or (guess_row > (len(board) -1)) or (guess_col < 0) or (guess_col> (len(board) -1)):