On 10/31/2011 02:14 PM, Marc Tompkins wrote:
On Mon, Oct 31, 2011 at 10:57 AM, Joel Montes de Oca
<joelmonte...@gmail.com>  wrote:
  I came up with this to solve the problem.

def UserChoice ():    # The function that returns the choice from the user
     while 1:

         print 'Please select (P) for paper, (R) for Rock, or (S) for Scissors.'
         choice = raw_input('What is your selection?: ')
         if choice.lower() in ('p', 'r','s'):    # Converts the user's choice 
to lowercase and confirms the choice is valid
             return choice
             break
         else:
             print 'Try again.'

It puts the choice into a loop and only exits when the user enters a valid 
value. It works and it's so much easier to read too!

You could simplify it even further by actually using the "while":

def UserChoice ():    # The function that returns the choice from the user
    choice = ''
    attempt = 0
    while choice.lower() not in ('p', 'r','s'):
        if attempt>  0: print 'Please try again.'
        print 'Please select (P) for paper, (R) for Rock, or (S) for Scissors.'
        choice = raw_input('What is your selection?: ')
        attempt +=1
    return choice.lower()
It's a matter of personal preference, but I try to avoid "while 1" or
"while True" loops if at all possible.  For one thing, it seems
counter-productive to set up a loop that doesn't exit, and then to
have to use 'break' to get out of it!

One last thing:  HTML formatting is pretty, but it tends to screw
things up.  Someone else is bound to say it if I don't, so:  please
use plain text only when submitting code to the list.  Thanks!
Things for the tip Mark, I have set up Thunderbird to send text only when emailing the python.org domain.

--
-Joel M.

_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to