[Tutor] bubble sort function

Dave Angel davea at davea.name
Wed Nov 26 12:53:20 CET 2014


Please don't top-post.  Put your response under the quote you're 
responding to.  And trim the parts that are no longer relevant.  I've 
rearranged this message to try to pretend that you did that.

 > On Wed, Nov 26, 2014 at 3:46 PM, Alan Gauld <alan.gauld at btinternet.com>
 > wrote:
 >
 >> On 26/11/14 09:57, Sunil Tech wrote:
 >>
 >>> Hi Danny,
 >>>
 >>> Curious to the use the need of using while True in the given example of
 >>> ask_for_a_digit().
 >>>
 >>>
 >>> On Mon, Nov 17, 2014 at 9:57 AM, Danny Yoo <dyoo at hashcollision.org
 >>> <mailto:dyoo at hashcollision.org>> wrote:
 >>>
 >>>      > def ask_for_a_digit():
 >>>      >     while True:
 >>>      >         digit = raw_input("Give me a digit between 0 and 9.")
 >>>      >         if digit not in "0123456789":
 >>>      >             print "You didn't give me a digit.  Try again."
 >>>      >         else:
 >>>      >             return int(digit)
 >>>
 >>
 >> The while loop makes it keep on asking until a valid input is
 >> received. Without the while loop it would only ask once and
 >> either return None or a digit.
 >>


On 11/26/2014 06:16 AM, Sunil Tech wrote:
> Thank you Alan. But a question here, how would it understand that the given
> input is valid?
>

Inside the while loop there is a else clause containing a return 
statement.  That's how the code escapes the while loop:  whenever the 
user enters something deemed correct.

More traditionally, a break will exit a loop.  Or the while can contain 
a more complex condition.  Example of that, untested:

def ask_for_a_digit()
     digit = "xxx"
     while len(digit) != 1   or  digit not in "0123456789":
         digit = raw_input("Give me a digit between 0 and 9.")

Unfortunately, this form doesn't include the "chiding" of the user. 
That's more painful, but it can be done.

def ask_for_a_digit()
     digit = ()
     while len(digit) != 1   or  digit not in "0123456789":
         if digit = (): print "You didn't give me a digit.  Try again"
         digit = raw_input("Give me a digit between 0 and 9.")




-- 
DaveA


More information about the Tutor mailing list