def print_board(board):
for row in board:
print(" | ".join(row))
print("-" * 5)
def check_winner(board):
# Check rows
for row in board:
if len(set(row)) == 1 and row[0] != ' ':
return row[0]
# Check columns
for col in range(3):
if len(set([board[row][col] for row in range(3)])) == 1 and board[0][col] != ' ':
return board[0][col]
# Check diagonals
if len(set([board[i][i] for i in range(3)])) == 1 and board[0][0] != ' ':
return board[0][0]
if len(set([board[i][2-i] for i in range(3)])) == 1 and board[0][2] != ' ':
return board[0][2]
return None
def tic_tac_toe():
board = [[' ' for _ in range(3)] for _ in range(3)]
current_player = 'X'
while True:
print_board(board)
row = int(input("Enter row (0, 1, or 2): "))
col = int(input("Enter column (0, 1, or 2): "))
if board[row][col] == ' ':
board[row][col] = current_player
winner = check_winner(board)
if winner:
print_board(board)
print(f"Player {winner} wins!")
break
if all(board[i][j] != ' ' for i in range(3) for j in range(3)):
print_board(board)
print("It's a tie!")
break
current_player = 'O' if current_player == 'X' else 'X'
else:
print("That position is already taken. Try again.")
if __name__ == "__main__":
tic_tac_toe()