'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 |
