You should use for whenever you can, because it creates the structure of your loops clear. Sometimes, however, you require to do an operation various times, but you don't want to know in advance how many times it requires to be done. In such conditions, you can use a while instruction statement, of the form:
while :
...
In order to evaluate a while statement, the interpreter evaluates , placing a Boolean value. If the value is 0, it skips all the statements and calculation moves on to the next statement in the code. If the value is 1 or true, then the instructions are performed, and the
is calculated again. If it is False, execution of the loop is ended, and if it is
True, it goes around again.
It will generally be the case that you initialize a variable before the while statement, modify that variable in the course of executing the loop, and check some property of that variable in the Boolean expression. Consider that you need to write a procedure that takes an argument n and returns the largest power of 2 that is shorter than n. You may do it like this:
def pow2Smaller(n):
p = 1
while p*2 < n:
p = p*2
return p