2

我正在通过 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

你能帮我解决这种情况吗?

提前感谢伙计们

4

3 回答 3

5

你有九个左括号,但只有七个右括号。

我个人会删除其中的大部分:

 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":检查应该在当前的and之前或代替设置board[guess_row][guess_col]为进行。"X"guess_rowguess_col

于 2013-01-06T10:15:32.453 回答
0

您在)冒号之前缺少一个(编辑:您也缺少另一个)。你的行应该是:

if((guess_row < 0) or (guess_row > (len(board) -1)) or (guess_col < 0) or (guess_col> (len(board) -1))):
于 2013-01-06T10:15:10.107 回答
0

用这个:

if(guess_row < 0) or (guess_row > (len(board) -1)) or (guess_col < 0) or (guess_col> (len(board) -1)):
于 2013-01-06T10:20:00.080 回答