[Tutor] for vs while

Alan Gauld alan.gauld at btinternet.com
Sat Sep 29 09:53:20 CEST 2007


"James" <jtp at nc.rr.com> wrote

> I have a dumb question...hopefully someone can shed some light on 
> the
> difference between for and while in the situation below.

You got the basic answer but I'll just add a comment.
while is your basic type loop, same as in C and most other languages.
for is really a *foreach* loop. It iterates over 
collections/sequences.
It is not an indexing loop and if you find yourself doing

for n in range(len(collection)):
     foo(collection[n])

You should consider whether there is a better way.
Normally

for item in collection:
    foo(item)

If you really need the index as well as the item then
use enumerate():

for n,item in enumerate(collection):
    print item, 'at index', n

> I'm trying to iterate through a list I've created.  The list 
> consists
> of a command, followed by a 'logging' message (a message printed to 
> a
> console or log file after the command is run).

The easiest way to do this is to put both command and message
in a tuple and have a list of tuples:

> stuff = [ ["cat /etc/password"] , ["viewed /etc/password"] ]

stuff = [ ("cat /etc/password" , "viewed /etc/password") ]

for com in stuff:
    os.system(com[0])
    print com[1]

Get the data structure right and the code will follow.

HTH,

Alan G
Just back from vacation in Switzerland :-) 




More information about the Tutor mailing list