Differences between revisions 2 and 5 (spanning 3 versions)
Revision 2 as of 2010-12-22 00:11:12
Size: 1250
Editor: host86-154-237-157
Comment:
Revision 5 as of 2017-03-31 23:19:56
Size: 1938
Editor: MarkZiesemer
Comment: Account for Python 3 performance improvement.
Deletions are marked like this. Additions are marked like this.
Line 2: Line 2:
Line 4: Line 3:
Line 7: Line 5:
''While'' loops, like the ForLoop, are used for repeating sections of code - but unlike a ''for'' loop, the ''while'' loop will not run ''n'' times, but until a defined condition is met. As the ''for'' loop in Python is so powerful, ''while'' is rarely used, except in cases where a user's input is required, for example - ''While'' loops, like the ForLoop, are used for repeating sections of code - but unlike a ''for'' loop, the ''while'' loop will not run ''n'' times, but until a defined condition is met. As the ''for'' loop in Python is so powerful, ''while'' is rarely used, except in cases where a user's input is required, for example:
Line 9: Line 7:
{{{#!python numbers=disable
n=
raw_input('Please enter\'hello\':')
while n.strip()!='hello':
    n=raw_input('Please enter\'hello\':')
{{{
n = raw_input("Please enter 'hello':")
while n.strip() != 'hello':
    n = raw_input("Please enter 'hello':")
Line 15: Line 13:
However, the problem with the above code is that it's wasteful. In fact, what you will see a lot of in Python is the following - However, the problem with the above code is that it's wasteful. In fact, what you will see a lot of in Python is the following:
Line 17: Line 15:
{{{#!python numbers=disable {{{
Line 19: Line 17:
    n=raw_input('Please enter\'hello\':')
    if n.strip()=='hello':
    n = raw_input("Please enter 'hello':")
    if n.strip() == 'hello':
Line 23: Line 21:
As you can see, this compacts the whole thing into a piece of code managed entirely by the ''while'' loop. Having ''True'' as a condition ensures that the code runs until it's broken by n.strip() equalling 'hello'. Another version you may see of this type of loop uses ''1'' instead of ''True'' - this is exactly the same, though in Python 2.*, using while ''1'' is minutely faster, due to the ability to resign ''True'' to a different value.
As you can see, this compacts the whole thing into a piece of code managed entirely by the ''while'' loop. Having ''True'' as a condition ensures that the code runs until it's broken by {{{n.strip()}}} equaling {{{'hello'}}}.
 * Another version you may see of this type of loop uses {{{while 1}}} instead of {{{while True}}}. This was due to past performance tweaks that are no longer relevant in current Python versions, and ''True'' is preferred for readability.
   * [[https://docs.python.org/3.0/whatsnew/2.3.html#optimizations|Starting with Py2.3]], the interpreter optimizes {{{while 1}}} to just a single jump. Using ''1'' is minutely faster, due to the ability to reassign ''True'' to a different value - the interpreter needs to look up the value of the variable, as opposed to loading a constant. As a programmer, it is up to you which style to use - but always remember that readability is important, and that speed is also important.
   * [[https://docs.python.org/3.0/whatsnew/3.0.html#changed-syntax|Starting in Python 3]], {{{True}}}, {{{False}}}, and {{{None}}} are reserved words, so using {{{while 1}}} here no longer provides any performance benefit.

While loops

Usage in Python

  • When do I use them?

While loops, like the ForLoop, are used for repeating sections of code - but unlike a for loop, the while loop will not run n times, but until a defined condition is met. As the for loop in Python is so powerful, while is rarely used, except in cases where a user's input is required, for example:

n = raw_input("Please enter 'hello':")
while n.strip() != 'hello':
    n = raw_input("Please enter 'hello':")

However, the problem with the above code is that it's wasteful. In fact, what you will see a lot of in Python is the following:

while True:
    n = raw_input("Please enter 'hello':")
    if n.strip() == 'hello':
        break

As you can see, this compacts the whole thing into a piece of code managed entirely by the while loop. Having True as a condition ensures that the code runs until it's broken by n.strip() equaling 'hello'.

  • Another version you may see of this type of loop uses while 1 instead of while True. This was due to past performance tweaks that are no longer relevant in current Python versions, and True is preferred for readability.

    • Starting with Py2.3, the interpreter optimizes while 1 to just a single jump. Using 1 is minutely faster, due to the ability to reassign True to a different value - the interpreter needs to look up the value of the variable, as opposed to loading a constant. As a programmer, it is up to you which style to use - but always remember that readability is important, and that speed is also important.

    • Starting in Python 3, True, False, and None are reserved words, so using while 1 here no longer provides any performance benefit.

WhileLoop (last edited 2017-04-10 16:43:34 by SteveHolden)

Unable to edit the page? See the FrontPage for instructions.