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

STEVEN PENA
STEVEN PENA
13,778 Points

Letter Game Refinement

i know am missing something it start good then when i add any letter it clears the screen and i have to start over

import random
import os
import sys

# make a list of words 
words = [
    'neysa',
    'jean',
    'kati',
    'carol',
    'mike',
    'jasmin cordero',
    'jenny nunez',
    'max',
    'ninoshuka',
    'steven',
    'anthony'       
]

def clear():
    if os.name =='nt':
        os.sy('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):
    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 letter!")
    else:
        return guess


def play(done):
    clear()
    secret_word = random.choice(words)
    good_guesses = []
    bad_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? n/y").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)

    ,,,

1 Answer

Chris Freeman
MOD
Chris Freeman
Treehouse Moderator 56,836 Points

If game is not "done" due to all letters found or 7 bad guesses, then says.exit() is reached.