#1
  1. No Profile Picture
    Registered User
    Devshed Newbie (0 - 499 posts)

    Join Date
    Sep 2012
    Posts
    3
    Rep Power
    0

    Hangman game help please =D


    Ok so here's my dilemma, I am currently reading 'Python Programming For the Absolute Beginner' (3rd edition) which is teaching me my first programming language, python 3.2.3. Now in this book at the end of one of the chapters there's a hangman game.

    I've already been reading this book for a while a little at a time and already have a pretty good grasp on simple things like functions (what they are, and most notably the len() function), modules, while loops, if statements, for loops, lists, tuples, dictionaries, string methods, list methods, conditions, variable types, what sequences are, and mutability.

    So now for my problem. I did not want to follow the books example on how to make the hangman game and instead tried to make it myself in IDLE. So I tried to make a while loop that took the players guess and made the exceptions for if a letter was already guessed and if a guess was wrong moving on to the next body part on the noose.

    If the player guesses correctly I add the letter to an empty string. My problem is how do I take that variable for correct letters and display in the correct order what the player has guessed so far. I mean if I was being lazy I COULD just tell the player if they were right or wrong and just use if correctLetters in word: but I really want to learn how to manipulate strings to have all the sequences where I want them.

    Any help is appreciated thanks =D
  2. #2
  3. No Profile Picture
    Registered User
    Devshed Newbie (0 - 499 posts)

    Join Date
    Sep 2012
    Posts
    3
    Rep Power
    0

    If it helps


    If it helps to understand what I'm talking about here's a sample of what my code would look like.

    import random

    WORDS = 'bunch of random words'.split()
    HANGMAN = (pic1, pic2, pic3, pic4, pic5, pic6, pic7)
    # ^Some ASCII art i made to show the noose and the stick man


    word = random.choice(WORDS)
    wrongGuesses = 0
    guessedLetters = ''
    guessedWord = ''

    playGame = None

    playGame = input('Press ENTER to exit or type in anything to play\n')

    if playGame != '':
    while wrongGuesses != 6
    print(HANGMAN[wrongGuesses], '_'*len(word))
    guess = input('Guess a letter')
    if guess != guessedLetters and guess in word:
    guessedWord += guess
    guessedLetters += guess
    elif guess in guessedLetters:
    print('You already guessed that letter')
    else:
    print('That letter is not in the word')
    wrongGuesses += 1

    and that's where I'm stuck at =\
    Last edited by monstahunta; September 28th, 2012 at 10:25 PM. Reason: Fixed while loop
  4. #3
  5. Contributing User
    Devshed Demi-God (4500 - 4999 posts)

    Join Date
    Aug 2011
    Posts
    4,841
    Rep Power
    480
    Code:
    import sys                           # import usually at top of script
    import random
    
    # otherwise fail as soon as possible
    if not input('Press ENTER to exit or type in anything to play\n'):
        sys.exit(0)
    
    HANGMAN = range(7) or (pic1, pic2, pic3, pic4, pic5, pic6, pic7)
    # ^Some ASCII art i made to show the noose and the stick man
    
    # let's not make case of the letter an issue.  use lower case.
    WORDS = 'bunch of random words'.lower().split()
    
    word = random.choice(WORDS)
    wrongGuesses = 0
    guesses = set()                  # set is better data type
    
    def substitutions(a,s,fill):
        '''
            a is an iterable with len method.
            s is an object supporting the __contains__ method
            fill is any object.
    
            returns a list of length len(a) which has the fill value
            substituted for any item of a not in s.
    
    
            Learn also to write a function,
            Learn to write a function of general use,
            Learn to use doctest.
    
            $ python3 -m doctest this_file.py  # unix command
    
            >>> # examples of our sterling substitutions function
            >>> substitutions(list(range(8))+[4],set((4,3,),),666)
            [666, 666, 666, 3, 4, 666, 666, 666, 4]
            >>> substitutions('mississippi',set('xsuzp'),'_')
            ['_', '_', 's', 's', '_', 's', 's', '_', 'p', 'p', '_']
            >>> ''.join(substitutions('mississippi',set('xsuzp'),'_'))
            '__ss_ss_pp_'
            >>>
        '''
        result = []
        for i in a:
            result.append(i if i in s else fill)
        return result
    
    while wrongGuesses != 6:
        print(HANGMAN[wrongGuesses],''.join(substitutions(word,guesses,'_')))
        guess = (input('Guess a letter')+' ')[0].lower() # one letter at a time.
        if guess in guesses:
            print('You already guessed that letter')
        else:
            guesses.add(guess)
            if guess not in word:
                print('That letter is not in the word')
                wrongGuesses += 1
            else:
                print('more logic needed to determine final victory')
    [code]Code tags[/code] are essential for python code and Makefiles!
  6. #4
  7. No Profile Picture
    Registered User
    Devshed Newbie (0 - 499 posts)

    Join Date
    Sep 2012
    Posts
    3
    Rep Power
    0

    Thank You!


    Thanks! My book doesn't cover doctest or the set data type so it helped alot. And my book always takes the long way around it seems since

    if not input():

    is a new concept to me that is total genius compared to what I've been doing. As far as making my own functions, I just started reading about that It seems fascinating! I can't wait to get to classes! (My goal is to make a pokemon clone before next fall when I'm going to college to learn programming)

    Also sorry about the codetags, I'm a noob and I normally read the FAQ's and stickies before posting on forums but I just figured that my spaces would automatically show up when I posted since I saw other posts where it showed

IMN logo majestic logo threadwatch logo seochat tools logo