Python Python Basics (2015) Letter Game App Letter Game Refinement

Kafe Hezam
Kafe Hezam
10,554 Points

missing the letter_game.py file

I'm trying to find the letter_game.py file but could not find it.

3 Answers

Chris Freeman
MOD
Chris Freeman
Treehouse Moderator 56,839 Points

You can find letter_game.py in the workspace for the video. Look under the Workspaces tab below the video near the Teacher's Notes.

For convenience, I've copied the file below:

import random

words = [
    'apple',
    'banana',
    'orange',
    'coconut',
    'strawberry',
    'lime',
    'grapefruit',
    'lemon',
    'kumquat',
    'blueberry',
    'melon'
]

while True:
    start = input("Press enter/return to start, or Q to quit ")
    if start.lower() == 'q':
        break

    secret_word = random.choice(words)
    bad_guesses = []
    good_guesses = []

    while len(bad_guesses) < 7 and len(good_guesses) != len(list(secret_word)):
        for letter in secret_word:
            if letter in good_guesses:
                print(letter, end='')
            else:
                print('_', end='')

        print('')
        print('Strikes: {}/7'.format(len(bad_guesses)))
        print('')

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

        if len(guess) != 1:
            print("You can only guess a single letter!")
            continue
        elif guess in bad_guesses or guess in good_guesses:
            print("You've already guessed that letter!")
            continue
        elif not guess.isalpha():
            print("You can only guess letters!")
            continue

        if guess in secret_word:
            good_guesses.append(guess)
            if len(good_guesses) == len(list(secret_word)):
                print("You win! The word was {}".format(secret_word))
                break
        else:
            bad_guesses.append(guess)
    else:
        print("You didn't guess it! My word was {}".format(secret_word))
Kafe Hezam
Kafe Hezam
10,554 Points

Hi Chris, Thanks for replying! Unfortunately, its in my workspace, I must have accidentally deleted it.

On the other hand, I have a question about this block of code:

while len(bad_guesses) < 7 and len(good_guesses) != len(list(secret_word)):

I understand the 'and' logic function but not the logic of

 len(good_guesses) != len(list(secret_word)): 

[MOD: added ```python formatting -cf]

Chris Freeman
MOD
Chris Freeman
Treehouse Moderator 56,839 Points

The code fragment:

 len(good_guesses) != len(list(secret_word)): 

If the length of good_guesses (that is, the number of correctly guessed letters) is not equal to the number of letters in the secret_word then it is implied that there are some letters left to guess so the game must continue.

There is a subtle flaw in this logic. If the secret_word has a repeated letter as in, say, "apple", the number guessed letters ["a", "p", "l", "e"] (4) will never equal the length of the secret_word "apple (5) so the game will never end correctly.

There is a mention of this error in one of the teacher's notes, and I believe Kenneth corrects this error in later videos. One solution is to use set instead of list to count the number of unique letters in secret_word.