'pep8 E501: line to long

My question is how do i rewrite this code smaller so i dont get an "Line too long (82 > 79 characters) (E501)" PEP8 error.

i tried:

if (gameBoard[0][0] == "X" and gameBoard[0][1] == "X"
and gameBoard[0][2] == "X"):

also tried:

if (gameBoard[0][0] == "X" and gameBoard[0][1] == "X" \
and gameBoard[0][2] == "X"):

When i run those above my code gets errors and dosent run as it did before. Anyone got tips on how to write this so it dosent trigger pep8?

# Define function to check for a winner
def checkForWinner(gameBoard):
    # X axis
    if gameBoard[0][0] == "X" and gameBoard[0][1] == "X" and gameBoard[0][2] == "X":
        print(player, "winner")
        return "X"
    elif gameBoard[0][0] == "O" and gameBoard[0][1] == "O" and gameBoard[0][2] == "O":
        print("O has won!")
        return "O"
    elif gameBoard[1][0] == "X" and gameBoard[1][1] == "X" and gameBoard[1][2] == "X":
        print(player, "winner")
        return "X"
    elif gameBoard[1][0] == "O" and gameBoard[1][1] == "O" and gameBoard[1][2] == "O":
        print("O has won!")
        return "O"
    elif gameBoard[2][0] == "X" and gameBoard[2][1] == "X" and gameBoard[2][2] == "X":
        print(player, "winner")
        return "X"
    elif gameBoard[2][0] == "O" and gameBoard[2][1] == "O" and gameBoard[2][2] == "O":
        print("O has won!")
        return "O"
    # Y axis
    if gameBoard[0][0] == "X" and gameBoard[1][0] == "X" and gameBoard[2][0] == "X":
        print(player, "winner")
        return "X"
    elif gameBoard[0][0] == "O" and gameBoard[1][0] == "O" and gameBoard[2][0] == "O":
        print("O has won!")
        return "O"
    elif gameBoard[0][1] == "X" and gameBoard[1][1] == "X" and gameBoard[2][1] == "X":
        print(player, "winner")
        return "X"
    elif gameBoard[0][1] == "O" and gameBoard[1][1] == "O" and gameBoard[2][1] == "O":
        print("O has won!")
        return "O"
    elif gameBoard[0][2] == "X" and gameBoard[1][2] == "X" and gameBoard[2][2] == "X":
        print(player, "winner")
        return "X"
    elif gameBoard[0][2] == "O" and gameBoard[1][2] == "O" and gameBoard[2][2] == "O":
        print("O has won!")
        return "O"
    # Cross wins
    elif gameBoard[0][0] == "X" and gameBoard[1][1] == "X" and gameBoard[2][2] == "X":
        print(player, "winner")
        return "X"
    elif gameBoard[0][0] == "O" and gameBoard[1][1] == "O" and gameBoard[2][2] == "O":
        print("O has won!")
        return "O"
    elif gameBoard[0][2] == "X" and gameBoard[1][1] == "X" and gameBoard[2][0] == "X":
        print(player, "winner")
        return "X"
    elif gameBoard[0][2] == "O" and gameBoard[1][1] == "O" and gameBoard[2][0] == "O":
        print("O has won!")
        return "O"
    else:
        return "N"



Solution 1:[1]

You can rewrite your chekings

if gameBoard[0][1] == "X" and gameBoard[1][1] == "X" and gameBoard[2][1] == "X":

as

if gameBoard[0][1] == gameBoard[1][1] == gameBoard[2][1] == "X":
    return "X"

# or a better way of doing this making this function more generic
if gameBoard[0][1] == gameBoard[1][1] == gameBoard[2][1]:
   return gameBoard[2][1]

You can rewrite your function as follows

def check_winner(board):
    # check rows
    for i in range(3):
        if board[i][0] == board[i][1] == board[i][2] != ' ':
            return board[i][0]
    # check columns
    for i in range(3):
        if board[0][i] == board[1][i] == board[2][i] != ' ':
            return board[0][i]
    # check diagonals
    if board[0][0] == board[1][1] == board[2][2] != ' ':
        return board[0][0]
    if board[0][2] == board[1][1] == board[2][0] != ' ':
        return board[0][2]
    # check for tie
    for i in range(3):
        for j in range(3):
            if board[i][j] == ' ':
                return ' '
    return 'Tie'

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 PleSo