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

Timothy Van Cauwenberge
Timothy Van Cauwenberge
8,958 Points

Word Game not working correctly

Strikes do not add up fro bad guesses it stays at, "Strikes: 0/7". Also, after first guess it reveals secret word but continues to let you guess. Please help.(Sorry code isn't from workshop)

import random

make a list of words

words = [ 'apple', 'banana', 'orange', 'kiwi', 'coconut', 'strawberry', 'passion fruit', 'kumquat', 'guava', 'mango', 'melon', 'cantalope', 'lemon', 'grapefruit', 'tomato', 'raspberry', 'blackberry', 'dragon fruit', 'green grape', 'raisin', 'purple grape', 'red grape', 'pineapple', 'peach' 'tangerine', 'lime', 'pear', 'cranberry'

]

while True: start = input("Press enter/return to start, or enter 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)):
    #draw guessed letters, spaces, and strikes
    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('')

    #take guess
    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:
        goodGuesses.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 secret word was {}".format(secretWord))
        #print out win/lose
Timothy Van Cauwenberge
Timothy Van Cauwenberge
8,958 Points

I'm really sorry for the disorganization.

Donald Roessler
Donald Roessler
10,988 Points

It's hard to tell from your post, as I'm guessing the formatting isn't accurate but towards the end of your code:

if guess in secret_word:
        goodGuesses.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)

That else statement should be nested with the prior if (is guess in word), not the latter (len of good VS. len of word)

Also, the following else statement isn't nested properly either it seems.:

else:
        print("You didn't guess it! My secret word was {}".format(secretWord))
        #print out win/lose

It needs to be nested with the "while len(bad_guesses) < 7..." statement. With the way things appear to be written now, any bad guess will trigger the word reveal, but not the break.

If you can try to post your code again in its entirety and can wrap it properly, that would help a lot with finding where the errors are occurring, but as it appears now, there are definitely indentation issues, which is a big part of python syntax.

1 Answer

Gilang Ilhami
Gilang Ilhami
12,045 Points

You are pretty close, Timothy!

But i think it suppose to be (good_guesses) and not (goodGuesses). Also (secret_word) and not (secretWord).

I maybe wrong, for i too have a problem with the codes.