wordlist = []

import string

#Loads all words, and returns those with numLetters letters.
def loadWords(numLetters, filename):
    something = open(filename, "r")

    data = something.readlines()
    something.close()

    newWords = []
    for word in data:
        word= word.lower()
        newWord = ""
        #Strip all non-letters, including whitespace
        for letter in word:
            if letter in string.letters:
                newWord = newWord + letter
                
        newWords.append(newWord)

    # Only include words longer than 2 letters and
    # shorter than 10 letters...
    newList = []
    for word in newWords:
        if len(word) == numLetters:
            newList.append(word)
    return(newList)

def pickNumWords():
    wl_str = raw_input("How many letters?")
    try:
       numLetters = int(wl_str)
       if numLetters < 3 or numLetters > 10:
           print "Pick a number between 3 and 10! Try again!"
           num = pickNumWords()
           return(num)
    except:
        print "that wasn't a valid number! Try again!"
        num = pickNumWords()
        return(num)

    #Everything is OK
    return numLetters
    

def hangman():
    global wordlist

    numLetters = pickNumWords()
    

    guesses = numLetters * 3
    
    print "You have", guesses, "guesses left"

    wordlist = loadWords(numLetters, "6of12.txt")
    print "DEMO: We have", len(wordlist), "words!"

    while guesses > 0:
        letter = raw_input("Enter your letter guess:")

        newList = filter( lambda w: letter[0] not in w, wordlist)

        print "DEMO: newList has", len(newList), "words left"

        if len(newList) > 0:
            wordlist = newList
            guesses = guesses -1

            print "Sorry, the word *I* was thinking of, doesn't have any letters", letter[0], " in it!"
            print "You  have ", guesses, "guesses left"
        else:
            #We have to reveil a letter!
            pass

    print "So sorry! You lost. The word I was thinking of was:"
    print wordlist[0]
    
        
    
    

hangman()
