Python noob hangman issue -
i'm trying learn python , i'm writing hangman game (which seems 'hello world' of python lol). think i've got down, function i've written replace hidden letters rightly guessed letter isn't working. life of me seems should want, instead replace entire hidden word 1 letter correctly guessed.
here's specific function:
def update_word_guessed(guess): global word_guessed in xrange(word.count(guess)): x in xrange(len(word)): if guess == word[x]: word_guessed = word_guessed.replace(word_guessed[x], word[x]) print word_guessed, 'wg[x] =', word_guessed[x], 'word[x] = ', word[x] return word_guessed
and here's whole thing:
import random import string wordlist_filename = "words.txt" def load_words(): """ returns list of valid words. words strings of lowercase letters. depending on size of word list, function may take while finish. """ print "loading word list file..." # infile: file infile = open(wordlist_filename, 'r', 0) # line: string line = infile.readline() # wordlist: list of strings wordlist = string.split(line) print " ", len(wordlist), "words loaded." return wordlist def choose_word(wordlist): """ wordlist (list): list of words (strings) returns word wordlist @ random """ return random.choice(wordlist) # end of helper code # ----------------------------------- # load dictionary of words , point # wordlist variable can accessed anywhere # in program wordlist = load_words() print '\n' word = choose_word(wordlist) word_guessed = [] in xrange(len(word)): word_guessed.append('-') word_guessed = ''.join(word_guessed) guesses = 10 correct_guesses = 0 letters_left = 'abcdefghijklmnopqrstuvwxyz' def initiate_game(): """ starts game """ print 'welcome game hangman!' print 'i thinking of word ', len(word), 'letters long' print '---------------' while guesses > 0 , correct_guesses < len(word): print 'you have ', guesses, 'guesses left.' print 'unused letters: ', letters_left guess = str.lower(raw_input('guess letter: ')) print word_guessed if check_letter_available(guess) == false: print 'sorry, looks have used letter.' continue check_guess(guess) if correct_guesses == len(word): print 'congradulations, win! ' print word_guessed else: print 'you out of guesses, word was: ', word def remove_guessed_letter(guess): global letters_left letters_left = letters_left.replace(guess, '~') return letters_left def check_letter_available(guess): if letters_left.find(guess) == -1: return false else: return true def update_word_guessed(guess): global word_guessed in xrange(word.count(guess)): x in xrange(len(word)): if guess == word[x]: word_guessed = word_guessed.replace(word_guessed[x], word[x]) print word_guessed, 'wg[x] =', word_guessed[x], 'word[x] = ', word[x] return word_guessed #def update_word_guessed(guess): def check_guess(guess): global guesses global correct_guesses guesses -= 1 if word.find(guess) == -1: print 'sorry, ', guess, 'is not part of word: ', word_guessed remove_guessed_letter(guess) return false else: correct_guesses += 1 print 'good job!' remove_guessed_letter(guess) update_word_guessed(guess) print word_guessed return true ## in xrange(len(word)): ## if guess == word[i]: ## correct_guesses += 1 ## print 'good job!' ## remove_guessed_letter(guess) ## update_word_guessed(guess) ## print ' '.join(word_guessed) ## return true ## else: ## print 'sorry, ', guess, 'is not part of word: '.join(word_guessed) ## remove_guessed_letter(guess) ## return false initiate_game()
you're replacing dashes in word letter here:
word_guessed = word_guessed.replace(word_guessed[x], word[x])
str.replace finds instances of first argument , replaces them second argument. want change 1 letter:
word_guessed = word_guessed[:x] + word[x] + word_guessed[x+1:]
there might other problems, that's issue you've described. enjoy!
Comments
Post a Comment