我通过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
你能帮我解决这个问题吗?
先谢谢你们
答案 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_row
至guess_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)):