Skip to main content

Hangman Game in Python

The origins of Hangman are obscure meaning not discovered, but it seems to have arisen in Victorian times, ” says Tony Augarde, author of The Oxford Guide to Word Games. 

This is a simple Hangman game using Python programming language. Beginners can use this as a small project to boost their programming skills and understanding logic.

  1. The Hangman program randomly selects a secret word from a list of secret words. The random module will provide this ability, so line 1 in program imports it.
  2. The Game: Here, a random word (a fruit name) is picked up from our collection and the player gets limited chances to win the game.
  3. When a letter in that word is guessed correctly, that letter position in the word is made visible. In this way, all letters of the word are to be guessed before all the chances are over.
  4. For convenience, we have given length of word + 2 chances. For example, word to be guessed is mango, then user gets 5 + 2 = 7 chances, as mango is a five letter word.

# Python Program to illustrate 
# Hangman Game 
import random 
from collections import Counter 

someWords = '''apple banana mango strawberry 
orange grape pineapple apricot lemon coconut watermelon 
cherry papaya berry peach lychee muskmelon'''

someWords = someWords.split(' ') 
# randomly choose a secret word from our "someWords" LIST. 
word = random.choice(someWords)  

if __name__ == '__main__': 
print('Guess the word! HINT: word is a name of a fruit') 
for i in word: 
# For printing the empty spaces for letters of the word 
print('_', end = ' ')  

playing = True
# list for storing the letters guessed by the player 
letterGuessed = ''  
chances = len(word) + 2
correct = 0
flag = 0
while (chances != 0) and flag == 0: #flag is updated when the word is correctly guessed 
chances -= 1

guess = str(input('Enter a letter to guess: ')) 
print('Enter only a letter!') 

# Validation of the guess 
if not guess.isalpha(): 
print('Enter only a LETTER') 
elif len(guess) > 1: 
print('Enter only a SINGLE letter') 
elif guess in letterGuessed: 
print('You have already guessed that letter') 

# If letter is guessed correctly 
if guess in word: 
k = word.count(guess) #k stores the number of times the guessed letter occurs in the word 
for _ in range(k):  
letterGuessed += guess # The guess letter is added as many times as it occurs 

# Print the word 
for char in word: 
if char in letterGuessed and (Counter(letterGuessed) != Counter(word)): 
print(char, end = ' ') 
correct += 1
# If user has guessed all the letters 
elif (Counter(letterGuessed) == Counter(word)): # Once the correct word is guessed fully, 
# the game ends, even if chances remain 
print("The word is: ", end=' ') 
flag = 1
print('Congratulations, You won!') 
break # To break out of the for loop 
break # To break out of the while loop 
print('_', end = ' ') 

# If user has used all of his chances 
if chances <= 0 and (Counter(letterGuessed) != Counter(word)): 
print('You lost! Try again..') 
print('The word was {}'.format(word)) 

except KeyboardInterrupt: 
print('Bye! Try again.')