[Tutor] 'word jumble' game

Jason Massey jason.massey at gmail.com
Tue Apr 17 18:23:12 CEST 2007


The main thing your program lacks is flexibility.  Adding new puzzles
requires chaining together a series of if..else statements and creating
variables for each hint.

Here's my quick version.  I store the puzzles and the hints in a two-tuple
sequence.  Following this method you could easily add additional hints for
each puzzle.

 (I changed up the scoring system a bit too...just my spin on it)

import random

# create a series of puzzles to choose from
puzzles = (("python","It's the best programming language for the absolute
beginner ..."),
           ("jumble","It's what this program does to words to make it
difficult to guess them ..."),
           ("easy","It's not difficult ..."),
           ("difficult","It's not easy ..."),
           ("answer","It's not a question ..."),
           ("xylophone","It's a musical instrument you have to hit with 2
small sticks ..."))


# pick one word randomly from the sequence
which_puzzle = random.choice(range(len(puzzles)))
correct_word = puzzles[which_puzzle][0]
jumbled_word = list(correct_word)
hint = puzzles[which_puzzle][1]

random.shuffle(jumbled_word)
jumbled_word = ''.join(jumbled_word)

print \
"""
            Welcome to Word Jumple!

    Unscramble the letters to make a word.
    (Press the enter key at the prompt to quit.)
"""


score = 0
while 1:
    print "The jumble:", jumbled_word
    guess = raw_input("\nYour guess: ")
    guess = guess.lower()

    if guess == '':
            break

    if guess != correct_word:
        print "Sorry that's not it."
        hint_prompt = raw_input("Would you like a hint? Y/N: ")
        hint_prompt = hint_prompt.lower()
        if hint_prompt.startswith('y'):
            print hint+"\n"
            score -= 50

    if guess == correct_word:
        score += 200
        print "\nThat's it! You guessed it!\n"
        if score == 200:
            print "Because you never asked for a hint you get %d points.\n"
% (score)
        else:
            print "Since you asked for a hint or two you're score is %d
points.\n" % (score)
        break


print "\nThanks for playing."


On 4/17/07, Alexander Kapshuk <akap at isd.dp.ua> wrote:
>
>  Hello Everyone,
>
>
>
> This is Alexander Kapshuk writing here again …
>
>
>
> Could you please have a look at the code below and let me know of any
> shortcuts that could be used there.
>
>
>
> The code works fine as it is. I was just wandering if there was a better,
> more compact and elegant way of writing the program.
>
>
>
> Thanking you all in advance.
>
>
>
> Alexander Kapshuk
>
>
>
>
>
> # Word Jumble Game
>
> #
>
> # The computer picks a random word and then "jumbles" it.
>
> # The player has to guess the original word.
>
> #
>
> # Should the player be stuck and require a hint, they will be prompted for
> a hint.
>
> # If the player answers 'yes', the appropriate hint will be displayed and
> the player will be asked to guess again.
>
> # If the player answers 'no', they will be asked to guess again and
> awarded some points if they manage to guess the jumbled word without ever
> asking for a hint.
>
>
>
> import random
>
>
>
> # create a sequence of words to choose from
>
> WORDS = ("python", "jumble", "easy", "difficult", "answer", "xylophone")
>
>
>
> # pick one word randomly from the sequence
>
> word = random.choice(WORDS)
>
>
>
> # create a variable to use later to see if the guess is correct
>
> correct = word
>
>
>
> # create hints for all the jumbled words
>
> hint0 = "\nIt's the best programming language for the absolute beginner
> ...\n"
>
> hint1 = "\nIt's what this program does to words to make it difficult to
> guess them ...\n"
>
> hint2 = "\nIt's not difficult ...\n"
>
> hint3 = "\nIt's not easy ...\n"
>
> hint4 = "\nIt's not a question ...\n"
>
> hint5 = "\nIt's a musical instrument you have to hit with 2 small sticks
> ...\n"
>
>
>
> # create a jumbled version of the word
>
> jumble = ""
>
>
>
> while word:
>
>     position = random.randrange(len(word))
>
>     jumble += word[position]
>
>     word = word[:position] + word[(position + 1):]
>
>
>
> # start the game
>
> print \
>
> """
>
>             Welcome to Word Jumple!
>
>
>
>     Unscramble the letters to make a word.
>
>     (Press the enter key at the prompt to quit.)
>
> """
>
> print "The jumble:", jumble
>
>
>
> guess = raw_input("\nYour guess: ")
>
> guess = guess.lower()
>
> score = 0
>
> while (guess != correct) and (guess != ""):
>
>     print "\nSorry, that's not it.\n"
>
>     hint_prompt = raw_input("Would you like a hint? Y/N: ")
>
>     hint_prompt = hint_prompt.lower()
>
>     if hint_prompt == "yes" and correct == WORDS[0]:
>
>         print hint0
>
>     elif hint_prompt == "yes" and correct == WORDS[1]:
>
>         print hint1
>
>     elif hint_prompt == "yes" and correct == WORDS[2]:
>
>         print hint2
>
>     elif hint_prompt == "yes" and correct == WORDS[3]:
>
>         print hint3
>
>     elif hint_prompt == "yes" and correct == WORDS[4]:
>
>         print hint4
>
>     elif hint_prompt == "yes" and correct == WORDS[5]:
>
>         print hint5
>
>     elif hint_prompt == "no":
>
>         score += 50
>
>
>
>     guess = raw_input("Your guess: ")
>
>     guess = guess.lower()
>
>
>
>     if guess == correct and hint_prompt == "no":
>
>         print "\nThat's it! You guessed it!\n"
>
>         print "Because you never asked for a hint you get", score,
> "points.\n"
>
>
>
> print "\nThanks for playing."
>
>
>
> raw_input("\n\nPress the enter key to exit.")
>
>
>
> _______________________________________________
> Tutor maillist  -  Tutor at python.org
> http://mail.python.org/mailman/listinfo/tutor
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.python.org/pipermail/tutor/attachments/20070417/01f91eb2/attachment.html 


More information about the Tutor mailing list