input: 
  def play_tic_tac_toe() -> str:
      """
      Create a TicTacToe game in Python. The game will prompt two players to take turns 
      entering their moves. The game will check for a win condition after each move.
      If a win condition is met, the game will declare the winner and end. If the board
      is full and no one has won, the game will declare a tie.
      """
      ttt = TicTacToe()
      while True:
          ttt.display()
          if ttt.check_win():
              return f"Game Over! {ttt.turn.upper()} wins!"
          if all(cell != '_' for row in ttt.board for cell in row):
              return "Game Over! It's a tie!"
          row = int(input(f"{ttt.turn.upper()}, enter the row (0, 1, or 2): "))
          col = int(input(f"{ttt.turn.upper()}, enter the column (0, 1, or 2): "))
          ttt.board[row][col] = ttt.turn
          ttt.turn = 'o' if ttt.turn == 'x' else 'x'
  
  # Test cases
  print(play_tic_tac_toe())  # Expected: Game Over! X wins! or Game Over! O wins! or Game Over! It's a tie!
  
output:     
  class TicTacToe:
      def __init__(self):
          self.board = [['_' for _ in range(3)] for _ in range(3)]
          self.turn = 'x'
  
      def display(self):
          for row in self.board:
              print(' '.join(row))
          print()
  
      def check_win(self):
          for row in self.board:
              if row[0] == row[1] == row[2] != '_':
                  return True
          for col in range(3):
              if self.board[0][col] == self.board[1][col] == self.board[2][col] != '_':
                  return True
          if self.board[0][0] == self.board[1][1] == self.board[2][2] != '_':
              return True
          if self.board[0][2] == self.board[1][1] == self.board[2][0] != '_':
              return True
          return False
  