Master For and While Loops in Python to Create a Hangman Game

What will we cover?

We will cover how to loop over a list. Further, we will learn the power of a While loop. Finally, we will create a Hangman Game.

Step 1: Loop over a list or sequence

Looping over a list can be done as follows.

my_list = ['First', 'Second', 'Third']

for item in my_list:
    print(item)

This can also be done over a string, which is a sequence.

s = "Rune"

for c in s:
    print(c)
    print("Inside loop")
print("Outside the loop")

Where we notice the syntax of how indentation works. What is inside and outside the loop.

Step 2: While loops and how they differ

Notice that for-loops in Python loop over a predetermined length. In the above cases, the length of the list or length of the string.

If you want a loop the is dependent on something inside the loop.

What do I mean. Let’s take an example.

value = 10

while value > 0:
    value = int(input("Value? "))

As you see – this loop is dependent on input in the loop. If you type zero or negative value, it will stop.

Step 3: Description of the Hangman Game

  • The game is as follows.
  • Computer has a list of words.
  • Computer chooses a random word from the list.
  • The player gets 10 wrong guesses (10 turns).
  • The game follows this loop
    • Computer prints the word character by character replacing with underscore those not guessed yet (initial no characters has been guessed).
    • Player guesses a character.
    • If character is not in word, a turn is withdrawn
    • If no turns left, computer wins.
    • If player has guessed all characters, player wins

Step 4: Implementing the Hangman Game

Let’s try to implement the Hangman Game

import random

words = ['father', 'enterprise', 'science', 'programming', 'resistance', 'fiction', 'condition', 'reverse', 'computer', 'python']

word = random.choice(words)

turns = 10

guesses = ''

while turns > 0:
    print(f"Turns left: {turns}")
    
    guessed_all = True
    for c in word:
        if c in guesses:
            print(c, end=' ')
        else:
            print('_', end=' ')
            guessed_all = False
    print()
    if guessed_all:
        print("You won")
        break
    
    guess = input("Guess a character: ")
    
    if guess in word:
        guesses += guess
    else:
        turns -= 1
else:
    print("You lost")

Step 5: Want more?

I am happy you asked.

If this is something you like and you want to get started with Python, then this is part of a 8 hours FREE video course with full explanations, projects on each levels, and guided solutions.

The course is structured with the following resources to improve your learning experience.

  • 17 video lessons teaching you everything you need to know to get started with Python.
  • 34 Jupyter Notebooks with lesson code and projects.
  • A FREE 70+ pages eBook with all the learnings from the lessons.

See the full FREE course page here.

Leave a Reply