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

Ron R
PRO
Ron R
Pro Student 2,878 Points

Letter Game Refinement

Hello -

My code is running but getting a result when I enter the first character/letter of the word the game will say "You win!" even though there are still remaining letters to be guessed in the word.

my code below --

import os import sys import random

make a list of words

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

def clear(): if os.name == 'nt': os.system('cls') else: os.system('clear')

def draw(bad_guesses, good_guesses, secret_word): clear()

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

for letter in bad_guesses:
    print(letter, end=' ')
print('\n\n')

for letter in secret_word:
        if letter in good_guesses:
            print(letter, end='')
        else:
            print('_', end='')

print(' ')

def get_guess(bad_guesses,good_guesses): while True: guess = input("Guess a letter: ").lower()

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

def play(done): clear() secret_word = random.choice(words) bad_guesses = [] good_guesses = []

while True:
    draw(bad_guesses,good_guesses,secret_word)
    guess = get_guess(bad_guesses,good_guesses)

    if guess in secret_word:
        good_guesses.append(guess)
        found = True
    for letter in secret_word:
        if letter not in good_guesses and letter != ' ':
            found = False

        if found:
            print("You win!")
            print("The secret word was {}".format(secret_word))
            done = True
    else:
        bad_guesses.append(guess)
        if len(bad_guesses) == 7:
            draw(bad_guesses,good_guesses, secret_word)
            print("You lost!")
            print("The secret word was{} ".format(secret_word))
            done = True

        if done:
            play_again = input("Play again? Y/n ").lower()
            if play_again !='n':
                return play (done=False)
            else:
                sys.exit()

def welcome():

start = input("Press enter/return to start or Q to quite ").lower()
if start == 'q':
    print("Bye!")
    sys.exit()
else:
    return True

print('Welcome back to Letter Guess!')

done = False

while True: clear() welcome() play(done)

Ron R
Ron R
Pro Student 2,878 Points

Figured it out - it was a matter of indentation for a block within else:

--final fixed block below--

    else:
        bad_guesses.append(guess)
    if len(bad_guesses) == 7:
        draw(bad_guesses,good_guesses, secret_word)
        print("You lost!")
        print("The secret word was{} ".format(secret_word))
        done = True

    if done:
        play_again = input("Play again? Y/n ").lower()
        if play_again !='n':
            return play (done=False)
        else:
            sys.exit()

--