[Tutor] Paper Rock Scissors game - User's choice not returned properly
Joel Montes de Oca
joelmontes01 at gmail.com
Mon Oct 31 19:47:56 CET 2011
On 10/31/2011 02:14 PM, Marc Tompkins wrote:
> On Mon, Oct 31, 2011 at 10:57 AM, Joel Montes de Oca
> <joelmontes01 at 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.
More information about the Tutor
mailing list