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

Popular posts from this blog

c++ - OpenCV Error: Assertion failed <scn == 3 ::scn == 4> in unknown function, -

php - render data via PDO::FETCH_FUNC vs loop -

The canvas has been tainted by cross-origin data in chrome only -