即使语句是Tru,我的函数也没有返回True

2024-06-02 10:32:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我做我的第一个里程碑项目,我不能让我的功能返回真的,如果获胜的条件得到满足。如果标记“X”或“O”在整个板上连续出现3次(Tic-Tac-Toe),则函数应返回True。有人能解释为什么它不返回真或假吗?你知道吗

我第一次写代码是

return (board[7] == mark and board[8] == mark and board[9] == mark)

但它不会变成真的。所以我试着用if和else语句来表示所有可能的获胜结果,但我仍然无法让它返回真值。只有当我把退货换成印刷品时它才起作用。该函数接受两个参数:Board和Mark。你知道吗

Board是一个列表,出于测试目的我使用了test_board = ['#','X','O','X','O','X','O','X','O','X']

我使用visualstudio代码和终端来运行我的代码。你知道吗

def win_check(board, mark):
    return ((board[7] == mark and board[8] == mark and board[9] == mark) or # across top
            (board[4] == mark and board[5] == mark and board[6] == mark) or # across middle
            (board[1] == mark and board[2] == mark and board[3] == mark) or # across bottom
            (board[7] == mark and board[4] == mark and board[1] == mark) or # down left
            (board[8] == mark and board[5] == mark and board[2] == mark) or # down middle
            (board[9] == mark and board[6] == mark and board[3] == mark) or # down right
            (board[7] == mark and board[5] == mark and board[3] == mark) or # diagonal
            (board[9] == mark and board[5] == mark and board[1] == mark))   # diagonal 

然后我尝试使用if和else语句:

def win_check(board, mark):
    if (board[7] == mark and board[8] == mark and board[9] == mark):
      return True # across the top
    elif(board[4] == mark and board[5] == mark and board[6] == mark):
      return True # across the middle
    elif(board[1] == mark and board[2] == mark and board[3] == mark):
      return True # across the bottom
    elif(board[7] == mark and board[4] == mark and board[1] == mark):
      return True # down the middle
    elif(board[8] == mark and board[5] == mark and board[2] == mark):
      return True # down the middle
    elif(board[9] == mark and board[6] == mark and board[3] == mark):
      return True # down the right side
    elif(board[7] == mark and board[5] == mark and board[3] == mark):
      return True # diagonal
    elif(board[9] == mark and board[5] == mark and board[1] == mark):
      return True # diagonal
    else :
      return False

如果赢的条件是真的,我希望输出是真的


Tags: orandthe代码boardtruemiddlereturn