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