""" Trying to keep it PEP8 compliant this time. Letter Game is a simple game based on hangman. You need to guess the secret word within a limited amount of strikes. """ import random import os import sys fruit_list = ['apple', 'banana', 'lime', 'cherry', 'orange', 'melon', 'watermelon', 'kiwi', 'blueberry', 'nectarine'] animal_list = ['monkey', 'human', 'dog', 'cat', 'lion', 'zebra', 'horse', 'dolphin', 'whale', 'flamingo', 'lizard'] tech_list = ['facebook', 'yahoo', 'airbnb', 'uber', 'google', 'intel', 'idm', 'apple', 'samsung', 'amazon', 'microsoft'] musicals_list = ['chicago', 'the lion king', 'the phantom of the opera', 'cats', 'les miserables', 'beauty and the\ beast', 'hedwig and the angry inch', 'next to normal', 'waitress'] def clear(): if os.name == 'nt': os.system('cls') else: os.system('clear') def draw(good_guesses, bad_guesses, secret_word): # DRAW spaces, letters & strikes clear() print(secret_word) # printing strikes first print("Strikes: {}/7".format(len(bad_guesses))) print("") # printing bad guesses so far for letter in bad_guesses: print(letter, end=" ") # have a space between each element print("\n") # double blank lines # print discovered/undiscovered letters for letter in secret_word: if letter in good_guesses: print(letter, end=" ") else: print('_', end=" ") print('') def get_guess(bad_guesses, good_guesses): # GET GUESS & LOOP through CONDITIONS while True: print('') guess = input("Enter a letter: ").lower() # conditions if len(guess) != 1: print("You can only guess a single letter at a time.") print('') elif guess in bad_guesses or guess in good_guesses: print("You've already guessed that letter.") print('') continue elif not guess.isalpha(): print("Not a valid letter! Try again.") else: return guess def play(done): list_of_lists = [fruit_list, animal_list, tech_list, musicals_list] # simply a list with various lists in it random_list = random.choice(list_of_lists) # selects one of the lists within list_of_lists secret_word = random.choice(random_list) # from random_list, selects a word secret_check = secret_word.replace(' ', '') # eliminating spaces for test good_guesses = [] bad_guesses = [] while True: draw(good_guesses, bad_guesses, secret_word) # call to draw(good_guesses, bad_guesses, secret_word) guess = get_guess(bad_guesses, good_guesses) # assign guess to get_guess(bad_guesses, good_guesses) # GOOD GUESSES & WIN if guess in secret_word: good_guesses.append(guess) found = True for letter in secret_check: if letter not in good_guesses: found = False # if found is True: if found: draw(good_guesses, bad_guesses, secret_word) print('') print("Congratulations!") print("The secret word was '{}'".format(secret_word)) done = True # BAD GUESSES & STRIKES else: # if guess NOT IN secret_word: bad_guesses.append(guess) if len(bad_guesses) == 7: draw(bad_guesses, good_guesses, secret_word) print('') print("You ran out of guesses!") print("The secret word was '{}'".format(secret_word)) done = True # PLAY AGAIN? if done: # if done is TRUE: print('') play_again = input("Play again? Y/n ").lower() if play_again != 'n': return play(done=False) # as long as done in play() is False we will keep playing else: sys.exit() def welcome(): start = input("Press Enter to start or 'Q' to quit ").lower() if start == 'q': print("Game Exited") sys.exit() else: return True print("Welcome to Letter Guess!") done = False while True: clear() welcome() play(done)