The "while" statement is more primitive than a for-loop statement. Whereas a for-loop automically assigns to a loop variable, then tests whether or not the loop body should be done, a while-loop only tests a condition.

What if Python did not have a for-loop statement? The same idea behind a for-loop could be done by recursion or by using a while-loop and assignments.

1
2
3
4
print "Start" ,  
for i in range(4):
  print i ,
print "Done", i

The output from this example is: Start 0 1 2 3 Done 3. To get the same output from a while-loop, an attempt might be:

1
2
3
4
5
6
i = 0
print "Start" ,  
while i<4:
  print i ,
  i += 1
print "Done", i

However, the output from running this is: Start 0 1 2 3 Done 4. It seems that a for-loop does something that a straightforward while-loop does not do: it prevents the loop variable from going "too far". In later chapters, other techniques are introduced so that a while-loop can indeed more accurately simulate a for-loop (though this is just an academic exercise).