import random

def choose_word():
    word_list = ["python", "programming", "hangman", "computer", "code", "algorithm", "variable"]
    return random.choice(word_list)

def display_word(word, guessed_letters):
    display = ""
    for letter in word:
        if letter in guessed_letters:
            display += letter
        else:
            display += "_"
    return display

def display_hangman(incorrect_guesses):
    hangman_art = [
        """
         ____
        |    |
        |
        |
        |
        |
       ===""",
        """
         ____
        |    |
        |    O
        |
        |
        |
       ===""",
        """
         ____
        |    |
        |    O
        |    |
        |
        |
       ===""",
        """
         ____
        |    |
        |    O
        |   /|
        |
        |
       ===""",
        """
         ____
        |    |
        |    O
        |   /|\\
        |
        |
       ===""",
        """
         ____
        |    |
        |    O
        |   /|\\
        |   /
        |
       ===""",
        """
         ____
        |    |
        |    O
        |   /|\\
        |   / \\
        |
       ==="""
    ]
    return hangman_art[incorrect_guesses]

def main():
    print("Welcome to Hangman!")
    play_again = True
    while play_again:
        word = choose_word()
        guessed_letters = []
        incorrect_guesses = 0
        max_incorrect_guesses = len(display_hangman(0)) - 1

        print("\n" + display_word(word, guessed_letters))

        while incorrect_guesses < max_incorrect_guesses:
            guess = input("\nGuess a letter: ").lower()

            if len(guess) != 1 or not guess.isalpha():
                print("Please enter a single letter.")
                continue

            if guess in guessed_letters:
                print("You've already guessed that letter.")
                continue

            guessed_letters.append(guess)

            if guess in word:
                print("Correct!")
                if all(letter in guessed_letters for letter in word):
                    print("Congratulations! You've guessed the word:", word)
                    break
            else:
                incorrect_guesses += 1
                print("Incorrect guess.")
                print(display_hangman(incorrect_guesses))

            print("\n" + display_word(word, guessed_letters))

        if incorrect_guesses == max_incorrect_guesses:
            print("Sorry, you've run out of guesses. The word was:", word)

        play_again_input = input("Do you want to play again? (yes/no): ").lower()
        play_again = play_again_input == "yes"

    print("Thanks for playing Hangman!")

if __name__ == "__main__":
    main()
