On Oct 18, 11:31 am, Terry Reedy <[EMAIL PROTECTED]> wrote: > Gandalf wrote: > > On Oct 18, 12:39 pm, Duncan Booth <[EMAIL PROTECTED]> > > wrote: > >> Gandalf <[EMAIL PROTECTED]> wrote: > >>> how can I do width python a normal for loop width tree conditions like > >>> for example : > >>> for x=1;x<=100;x+x: > >>> print x > >> What you wrote would appear to be an infinite loop so I'll assume you meant > >> to assign something to x each time round the loop as well. The simple > >> Python translation of what I think you meant would be: > > >> x = 1 > >> while x <= 100: > >> print x > >> x += x > > >> If you really insist on doing it with a for loop: > > >> def doubling(start, limit): > >> x = start > >> while x <= limit: > >> yield x > >> x += x > > >> ... > > >> for x in doubling(1, 100): > >> print x > > > I was hopping to describe it with only one command. most of the > > languages I know use this. > > It seems weird to me their is no such thing in python. it's not that I > > can't fined a solution it's all about saving code > > Python: 'makes common things easy and uncommon things possible'. > > The large majority of use cases for iteration are iterating though > sequences, actual and virtual, including integers with a constant step > size. Python make that trivial to do and clear to read. Your example is > trivially written as > > for i in range(11): > print 2**i > > Python provide while loops for more fine-grain control, and a protocol > so *reuseable* iterators can plug into for loops. Duncan showed you > both. If you *need* a doubling loop variable once, you probably need > one more than once, and the cost of the doubling generator is amortized > over all such uses. Any Python proprammer should definitely know how to > write such a thing without hardly thinking. We can squeeze a line out > of this particular example: > > def doubling(value, limit): > while value <= limit: > yield value > value += value > > Terry Jan Reedy
I agree that using range() for simple iterations is the way to go. Here are some examples of python expressions you'd use in specific situations: # instead of for (i = 0; i < 100; i++) for i in range(100): pass # instead of for (i = 10; i < 100; i++) for i in range(10, 100): pass # instead of for (i = 1; i < 100; i += 2) for i in range(1, 100, 2): pass # instead of for (i = 99; i >= 0; i--) for i in range(100)[::-1]: pass There's always a way to do it, and it's almost always really simple :-D -- http://mail.python.org/mailman/listinfo/python-list