[Tutor] dont understand part of a code

Michael Selik michael.selik at gmail.com
Tue Jul 5 17:36:24 EDT 2016


On Sat, Jul 2, 2016 at 8:29 AM Alan Gauld via Tutor <tutor at python.org>
wrote:

> There are arguably easier ways of doing this
>

I think you'll find that for-loops are preferable to while-loops. Here's an
alternative implementation.

https://gist.github.com/selik/d8e0a7622ceff0fe8984a7d19d44bfca

    import random
    import string

    drawings = (
        r"""
        ------|
        |
        |
        |
        |
        --
        """,
        r"""
        ------|
        |     0
        |
        |
        |
        --
        """,
        r"""
        ------|
        |     0
        |    -+-
        |
        |
        --
        """,
        r"""
        ------|
        |     0
        |   /-+-
        |
        |
        --
        """,
        r"""
        ------|
        |     0
        |   /-+-\
        |
        |
        --
        """,
        r"""
        ------|
        |     0
        |   /-+-\
        |     |
        |
        --
        """,
        r"""
        ------|
        |     0
        |   /-+-\
        |     |
        |    |
        --
        """,
        r"""
        ------|
        |     0
        |   /-+-\
        |     |
        |    | |
        --
        """
    )

    print('Welcome to Hangman.')
    print('Good luck!')

    words = 'python ruby php java unix linux perl'.split()
    target = list(random.choice(words))
    known = ['_'] * len(target)
    used = []

    for drawing in drawings:
        print('-'.join(c if c not in used else ' ' for c in
string.ascii_lowercase))
        print(drawing, '\n\t', ' '.join(known))
        guess = input('\nEnter your guess: ').lower()

        while guess in used:
            print("You've already guessed that letter")
            guess = input('Please enter a new guess: ').lower()

        used.append(guess)
        if guess in target:
            print('Yes, {!r} is in the word!'.format(guess))
            for i, letter in enumerate(target):
                if guess == letter:
                    known[i] = letter
        else:
            print('Sorry, {!r} is not in the word.'.format(guess))

        if known == target:
            print('\nYou guessed the word correctly!')
            break
    else:
        print('\nYou have been hanged!')

    print('The word was {!r}'.format(''.join(target)))


More information about the Tutor mailing list