import string def loadWords(filename): f = open(filename, "r") data = f.readlines() f.close() wordList = [] for word in data: newWord = "" for letter in word.lower(): if letter in string.ascii_lowercase: newWord = newWord + letter wordList.append(newWord) return wordList def pickNumber(): numLettersStr = input("How many letters?") try: numLetters = int(numLettersStr) except: print("not a valid number, try again!") num = pickNumber() return(num) if numLetters < 3 or numLetters > 10: print("Please pick a number between 3 and 10!") num = pickNumber() return(num) else: return numLetters #This function goes through the wordlist, counting #how many words have the letter at the spot. def countLetterSpots(letter, spot, wordList): counter = 0 for word in wordList: if word[spot] == letter: counter = counter + 1 return counter def hangman(): global wordList wordList = loadWords("6of12.txt") print("Read the words!, we have", len(wordList), "of them!") numLetters = pickNumber() ourSpots = "" for x in range(numLetters): ourSpots = ourSpots + "_" ## newList = [] ## for word in wordList: ## if len(word) == numLetters: ## newList.append(word) ## wordList = newList wordList =list( filter( lambda w: len(w) == numLetters, wordList) ) print("We have", len(wordList), "of ", numLetters, "length!") guesses = numLetters * 3 while( guesses > 0): guesses = guesses - 1 letter = input("Guess a letter:") newList = [] newList = list( filter( lambda w: letter[0] not in w, wordList) ) ## for word in wordList: ## if letter[0] not in word: ## newList.append(word) if len(newList) > 0: print ("Sorry, my word does not have", letter[0], "in it!") wordList = newList print("DEMO: we now have:", len(wordList), "words left...") print("You now have ", guesses, "Guesses left!") else: aList = [] for x in range(numLetters): num = countLetterSpots(letter[0], x, wordList) aList.append(num) print("Spots are:", aList) spotNum = max(aList) spotIdx = aList.index(spotNum) spots = spots[0:spotIdx] + letter[0] + spots[spotIdx:] hangman()