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 trialTimothy Van Cauwenberge
8,958 PointsWord 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
Donald Roessler
10,988 PointsIt'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
12,045 PointsYou 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.
Timothy Van Cauwenberge
8,958 PointsTimothy Van Cauwenberge
8,958 PointsI'm really sorry for the disorganization.