我正在编写一个函数来检查井字游戏中的获胜者。
我的目的是在游戏中覆盖这些空间时返回 true 或 false 以确定获胜者。 它在第一个 or 之后返回一个 syntax error。写这个我哪里错了?
def is_winner(board_spaces, letter):
return
(board_spaces[3] == letter and board_spaces[2] == letter and board_spaces[1] == letter) or
(board_spaces[1] == letter and board_spaces[4] == letter and board_spaces[7] == letter) or
(board_spaces[2] == letter and board_spaces[5] == letter and board_spaces[8] == letter) or
(board_spaces[3] == letter and board_spaces[6] == letter and board_spaces[9] == letter) or
(board_spaces[3] == letter and board_spaces[5] == letter and board_spaces[7] == letter) or
(board_spaces[1] == letter and board_spaces[5] == letter and board_spaces[9] == letter)
答案 0 :(得分:0)
请从您的退货声明中删除输入
return (statement_1)or(statement_2)...
return (board_spaces[3] == letter and board_spaces[2] == letter and board_spaces[1] == letter) or
(board_spaces[1] == letter and board_spaces[4] == letter and board_spaces[7] == letter) or
(board_spaces[2] == letter and board_spaces[5] == letter and board_spaces[8] == letter) or
(board_spaces[3] == letter and board_spaces[6] == letter and board_spaces[9] == letter) or
(board_spaces[3] == letter and board_spaces[5] == letter and board_spaces[7] == letter) or
(board_spaces[1] == letter and board_spaces[5] == letter and board_spaces[9] == letter)
答案 1 :(得分:0)
你缺少一个括号
def is_winner(board_spaces, letter):
return \
(
(board_spaces[3] == letter and board_spaces[2] == letter and board_spaces[1] == letter) or
(board_spaces[1] == letter and board_spaces[4] == letter and board_spaces[7] == letter) or
(board_spaces[2] == letter and board_spaces[5] == letter and board_spaces[8] == letter) or
(board_spaces[3] == letter and board_spaces[6] == letter and board_spaces[9] == letter) or
(board_spaces[3] == letter and board_spaces[5] == letter and board_spaces[7] == letter) or
(board_spaces[1] == letter and board_spaces[5] == letter and board_spaces[9] == letter))
通过这些额外的括号,您可以对 return 语句说您给出一个最终答案,而不是在“a 或 b”之间进行选择
你也可以使用 \
来继续下一行,让 python 知道你在语法中没有完成该行
答案 2 :(得分:0)
为避免出错,请将整个语句写在一行而不是换行符。
如果要换行,可以在换行前使用 \
。看下面的代码。
def add(num1, num2):
return num1 + \
num2
print(add(10, 10))
答案 3 :(得分:0)
正如其他人所说,您不能像以前那样将语句分成多行。
我建议进行更易于阅读和编写的改进。索引列表不完整,因为它只是一个例子。
indices_to_match = [[1, 4, 7], [2, 5, 7], [3, 6, 9]]
def is_winner(board_spaces, letter):
return any([
all([board_spaces[space] == letter
for space in row])
for row in indices_to_match])
这样做的好处在于它将索引列表与代码的其余部分分开,使其更具可读性。
另请注意 Python 列表是从零开始的,所以第一个索引是 0。