def print_board(board): for row in board: print("|".join(row)) print("-" * 5) def check_win(board, player): win_conditions = [ [board[0][0], board[0][1], board[0][2]], [board[1][0], board[1][1], board[1][2]], [board[2][0], board[2][1], board[2][2]], [board[0][0], board[1][0], board[2][0]], [board[0][1], board[1][1], board[2][1]], [board[0][2], board[1][2], board[2][2]], [board[0][0], board[1][1], board[2][2]], [board[2][0], board[1][1], board[0][2]] ] return [player, player, player] in win_conditions def get_player_move(player): while True: try: move = int(input(f"Player {player}, enter your move (1-9): ")) - 1 if move < 0 or move > 8: raise ValueError if board[move // 3][move % 3] != " ": print("This space is already taken.") continue return move except ValueError: print("Invalid input. Please enter a number between 1 and 9.") def play_game(): for turn in range(9): player = "X" if turn % 2 == 0 else "O" print_board(board) move = get_player_move(player) board[move // 3][move % 3] = player if check_win(board, player): print_board(board) print(f"Player {player} wins!") return print_board(board) print("It's a tie!") # Initialize the game board board = [[" " for _ in range(3)] for _ in range(3)] # Start the game play_game()