Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial

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

Maciej Walczak
Maciej Walczak
5,042 Points

Program does not print a good guess.

Hello all, i have a working code of the letter game, however when i guess a right letter it always prints "_____". I tried to compare it to teachers one, and i can't find whats wrong with it.

import random

words = [
    "bmw", 
    "mercedes",
    "volkswagen",
    "opel",
    "maybach",
    "porsche",
    "jaguar",
    "rolls",
    "maseratti",
    "ferrari",
    "lexus",
    "toyota",
    "lada",
    "seat",
    "ford",
    "skoda"
]    
# make a list of words

# draw spaces
# take guess
# draw guesses letters and strikes
# print ou win/lose

while True:
    start = input("Press enter/return to start, or press Q to quit: ")
    if start.lower() == "q":
        break
    # pick a random word
    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 guesses that letter")
            continue
        elif not guess.isalpha():
            print("You can only guess letters")
            continue
        if guess in good_guesses:
            good_guesses.append(guess)
            if len(good_guesses) == len(list(secret_word)):
                print("You win! The secret word was {}.".format(secret_word))
                break
        else:
            bad_guesses.append(guess)
    else:
        print("You didnt guess it! My secret word was {}.".format(secret_word))

1 Answer

Steven Parker
Steven Parker
231,271 Points

Where you have:

        if guess in good_guesses:

You probably meant to put:

        if guess in secret_word:

And you might want to change guesses to guessed in "You've already guesses that letter".

Maciej Walczak
Maciej Walczak
5,042 Points

Thanks a lot. That did the trick