Hi Garry, break is essential for while loops like that one. You'll see that construct often enough in Python.
While 1 or While True followed by an if <condition> : break Bit awkward, makes me miss the do - while construct. continue is very useful in for loops. Let's say I have a set of numbers, but I don't want to work with the number 5. I have a phobia or something. numbers = [1,2,3,4,5,6,7] for number in numbers: if number == 5: continue print number Continue will exit the loop at that point, but will continue with the next value in numbers. Try swapping break for continue. On 9/25/05, Garry Rowberry <[EMAIL PROTECTED]> wrote: > Thank you Liam, > > Works a treat, must look at the break and continue commands in more detail > > Regards > > Gaz > > -----Original Message----- > From: Liam Clarke [mailto:[EMAIL PROTECTED] > Sent: Sunday, September 25, 2005 12:10 PM > To: Garry Rowberry; Python Tutor Mailing List > Subject: Re: [Tutor] Error checking - very basic question > > Hi Garry, > dau_version = None > while dau_version not in ("2.8", "2.1"): > dau_version = raw_input("\n\tIs the DAU a version 2.1 or 2.8, > please > enter only 2.1 or 2.8 ") > print"\n\t\aError! - please enter only 2.1 or 2.8." > else: > print"" > > > I don't know what they else is meant to do, I take it that's when your > while loop exits. > > Here's how your code will run - > > dau_version = None > (while statement) is dau_version "2.8" or "2.1"? Nope. > dau_version = rawinput("Is...2.8") > print "Error! - please enter only 2.1 or 2.8" > is dau_version "2.8" or "2.1"? Yep - exit loop. > > Try doing it like this - > > while True: > dau_version = raw_input("\n\tIs the DAU a version 2.1 or 2.8, please\ > enter only 2.1 or 2.8 ") > if dau_version in ("2.1", "2.8"): > break > print "Error! - please enter only 2.1 or 2.8" > > > What will happen is that your while loop will loop forever (as True is > always True). > However, if dau_version is "2.1" or "2.8", the break command will be > called, which exits out of the loop at that point. > > So your loop looks like this now - > > while True: > get dau_version > if dau_version is right, exit loop here. > print error message > > Regards, > > Liam Clarke > On 9/25/05, Garry Rowberry <[EMAIL PROTECTED]> wrote: > > I have a call which needs to reply 2.1 or 2.8 and report an error if not: > > > > > > def ask_dau_version(): > > """Determine the product issue of the DAU.""" > > dau_version = None > > while dau_version not in ("2.8", "2.1"): > > dau_version = raw_input("\n\tIs the DAU a version 2.1 or 2.8, > please > > enter only 2.1 or 2.8 ") > > print"\n\t\aError! - please enter only 2.1 or 2.8." > > else: > > print"" > > return dau_version > > > > I can see why it isn't working, the error message is in the wrong place, > but > > I can't see a simple way around it (wood for the trees) > > > > Gaz > > > > _______________________________________________ > > Tutor maillist - Tutor@python.org > > http://mail.python.org/mailman/listinfo/tutor > > > > _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor