1250
Comment: Added WhileLoop to compliment ForLoop as requested.
|
2052
|
Deletions are marked like this. | Additions are marked like this. |
Line 1: | Line 1: |
= While loops = == Usage in Python == |
= While loops = == Usage in Python == |
Line 6: | 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 8: | 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 14: | 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 16: | Line 15: |
{{{#!python numbers=disable | {{{ |
Line 18: | Line 17: |
n=raw_input('Please enter\'hello\':') if n.strip()=='hello': |
n = raw_input("Please enter 'hello':") if n.strip() == 'hello': |
Line 22: | 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. * See also: [[http://stackoverflow.com/questions/3815359/while-1-vs-for-whiletrue-why-is-there-a-difference]] |
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.
See also: http://stackoverflow.com/questions/3815359/while-1-vs-for-whiletrue-why-is-there-a-difference