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! _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor