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

having trouble with letter_game.py getting a couple of errors

getting a couple of errors in the letter_game Traceback (most recent call last): File "letter_game.py", line 112, in <module> play (done) File "letter_game.py", line 68, in play draw(bad_guesses, good_guesses, secret_word) here is my code

import os import random import sys

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:
        ("You've already guessed that letter!")            
    elif not guess.isalpha():
        print("You can only guess letters!")            
    else:
        return guess

def play(done): clear() secre_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:
                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 quit ").lower() if start == 'q': print("Bye!") sys.exit() else: return True

print("Welcome to Letter Guess!")

done = False

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

would appreciate the help :)

1 Answer

Justin Black
Justin Black
24,266 Points

First thing I notice is:

secre_word = random.choice(words)

which should be:

secret_word = random.choice(words)

At a first glance, pretty sure it all boils down to that one simple typo.