在“和”语句中使用多个“或”

问题描述 投票:1回答:2
def check_over(mark):

    ######################################
    #This checks for a win################
    ######################################
    if board[1] == mark and board[2] == mark and board[3] == mark
    or board[4] == mark and board[5] == mark and board[6] == mark
    or board[7] == mark and board[8] == mark and board[9] == mark
    or board[1] == mark and board[4] == mark and board[7] == mark
    or board[2] == mark and board[5] == mark and board[8] == mark
    or board[3] == mark and board[6] == mark and board[9] == mark
    or board[1] == mark and board[5] == mark and board[9] == mark
    or board[3] == mark and board[5] == mark and board[7] == mark:
        print(f'{mark} won!')

此代码在我尝试调用它时产生以下错误:

    if board[1] == mark and board[2] == mark and board[3] == mark
       ^
    SyntaxError: invalid syntax

此功能用于根据名为board的python列表检查井字游戏中的胜利。

我的问题在哪里?

编辑:尝试修复代码时遇到另一个错误,仍然需要帮助!

def check_over(mark):

    ######################################
    #This checks for a win################
    ######################################
    if board[1] == mark and board[2] == mark and board[3] == mark  or board[4] == mark and board[5] == mark and board[6] == mark or board[7] == mark and board[8] == mark and board[9] == mark or board[1] == mark and board[4] == mark and board[7] == mark or board[2] == mark and board[5] == mark and board[8] == mark or board[3] == mark and board[6] == mark and board[9] == mark or board[1] == mark and board[5] == mark and board[9] == mark or board[3] == mark and board[5] == mark and board[7] == mark:
        print(f'{mark} won!')
        return True
    elif " " not in board:
        ###############################
        #This checks for tie###########
        ###############################
        print('The game ended in a tie!')
        return True

它给我以下错误:

    def check_over(mark):
                         ^
IndentationError: expected an indented block
python python-3.x loops statements multiple
2个回答
2
投票

您正在发生SyntaxError,因为您没有使用\字符跨越多行

def check_over(mark):
    ######################################
    #This checks for a win################
    ######################################
    if board[1] == mark and board[2] == mark and board[3] == mark \
    or board[4] == mark and board[5] == mark and board[6] == mark \
    or board[7] == mark and board[8] == mark and board[9] == mark \
    or board[1] == mark and board[4] == mark and board[7] == mark \ 
    or board[2] == mark and board[5] == mark and board[8] == mark \
    or board[3] == mark and board[6] == mark and board[9] == mark \
    or board[1] == mark and board[5] == mark and board[9] == mark \
    or board[3] == mark and board[5] == mark and board[7] == mark:
        print(f'{mark} won!')

1
投票

在python的行中间不能有新行。尝试以下操作:

if board[1] == mark and board[2] == mark and board[3] == mark  or board[4] == mark and board[5] == mark and board[6] == mark or board[7] == mark and board[8] == mark and board[9] == mark or board[1] == mark and board[4] == mark and board[7] == mark or board[2] == mark and board[5] == mark and board[8] == mark or board[3] == mark and board[6] == mark and board[9] == mark or board[1] == mark and board[5] == mark and board[9] == mark or board[3] == mark and board[5] == mark and board[7] == mark:
    print(f'{mark} won!')
© www.soinside.com 2019 - 2024. All rights reserved.