Table of Contents

Pyhang Game

Hangman Game v1

The following game illustrates the use of lists. It is one way to do the game.

import random

def play(self):
    # List of words to choose from
    words = [ 'apple', 'banana', 'pig', 'going' ]

    guesses = []

    chances = 7
    tries = 0

    # Pick a random word
    word = random.choice(common_nouns)

    gameword = [ '_' ] * len(word)

    # This is our game loop.
    while tries < chances:
        print("")
        print("=====")

        print(" ".join(gameword))
        print("")

        # Ask the player to guess a letter.
        print("Guesses: " + "".join(guesses))
        print("Tries left: ", chances-tries)
        guess = input("Please guess a letter: ")

        # Did we already guess this letter?
        if guess not in guesses:
            guesses.append(guess)
            guesses.sort()

            if guess in word:
                for i in range(len(word)):
                    if word[i] == guess:
                        gameword[i] = guess
            else:
                tries = tries + 1


        # Check if the word has been completely guessed
        if '_' not in gameword:
            print("Congratulations! You've guessed the word: " + word)
            break

        if tries >= chances:
            print("You've run out of attempts. The word was: " + word)

Initially, you can just use print(gameword) instead of a more complex way of printing the game word. Later you can introduce .join() and explain what it does. Also, after the testing stage you can add more words.

Version 2

I taught another course to older kids and came up with a more straightforward way:

import random

wordlist = [
    "Dog", "Cat", "Bird", "Fish", "Elephant", "Tiger", "Lion", "Monkey", "Bear", "Horse",
    "Cow", "Chicken", "Pig", "Sheep", "Goat", "Duck", "Apple", "Banana", "Orange", "Grape",
    "Strawberry", "Bread", "Cheese", "Butter", "Milk", "Egg", "Rice", "Pasta", "Meat", "Chicken",
    "Beef", "Pork", "Fish", "Shrimp", "Salad", "Soup", "Sandwich", "Jacket", "Shirt", "Pants",
    "Dress", "Skirt", "Shorts", "Hat", "Shoes", "Socks", "Gloves", "Scarf", "Belt", "Coat"
]

gameword = random.choice(wordlist)
gameword = gameword.lower()

guessed = ""
badguess = ""
playing = True
check = ""
chances = 7
round = 1

while playing:
    print("")
    print(f"Bad guesses: {badguess}")
    print(f"Guesses remaining: {chances}!")
    for letter in gameword:
        if letter in guessed:
            print(letter, end = ' ')
        else:
            print('_', end = ' ')

    print("") # skip one line

    guess = input("Choose a letter: ")
    guess = guess.lower()

    if guess in gameword:
        print("Good guess!")
        guessed = guessed + guess
    else:
        print("Bad guess!")
        badguess = badguess + guess
        chances = chances - 1

    # Check to see if we need to keep guessing
    playing = False
    for letter in gameword:
        if letter not in guessed:
            playing = True

    # End the game if we run out of chances
    if chances <= 0:
        playing = False

This version began with a wordlist and random.choice. Then we made a guess-check algorithm. Then we replaced the print statement with the one that prints _'s. Then we made the game loop. Then we added checks for chances and completion.