import random
import string
def get_valid_word(words):
"""
Returns a valid word from the provided list of words.
Ensures the word has no spaces or hyphens and converts it to uppercase.
"""
word = random.choice(words)
while '-' in word or ' ' in word:
word = random.choice(words)
return word.upper()
def hangman():
"""
The main function for the Hangman game.
"""
words = ["python", "javascript", "computer", "programming", "algorithm",
"hangman", "challenge", "development", "random", "function"]
word = get_valid_word(words)
word_letters = set(word) # Letters in the word to be guessed
alphabet = set(string.ascii_uppercase) # Set of uppercase English letters
used_letters = set() # Set of letters guessed by the user
lives = 6
# Main game loop
while len(word_letters) > 0 and lives > 0:
print(f"\nYou have {lives} lives left and you have used these letters: ", ' '.join(sorted(used_letters)))
# Display the current state of the word
word_list = [letter if letter in used_letters else '-' for letter in word]
print("Current word: ", ' '.join(word_list))
# Get user input
user_letter = input("Guess a letter: ").upper()
if len(user_letter) != 1 or user_letter not in alphabet:
print("Invalid input. Please enter a single alphabet character.")
continue
if user_letter in used_letters:
print("You have already used that character. Please try again.")
continue
# Process valid guess
used_letters.add(user_letter)
if user_letter in word_letters:
word_letters.remove(user_letter)
print("Good guess!")
else:
lives -= 1
print("Letter is not in the word.")
# End of the game
if lives == 0:
print(f"\nYou died. The word was {word}.")
else:
print(f"\nCongratulations! You guessed the word {word}!")
if __name__ == "__main__":
hangman()