PEP 284, Integer for-loops
Mats Wichmann
mats at laplaza.org
Thu Mar 7 15:46:38 EST 2002
On Wed, 06 Mar 2002 14:23:02 -0800, David Eppstein
<eppstein at ics.uci.edu> wrote:
:In article <slrna8d4bj.utc.grey at teleute.dmiyu.org>,
: Steve Lamb <grey at despair.dmiyu.org> wrote:
:
:> Perceived lack. IE, this is a solution looking for a problem. I read it
:> and really have to ask.... why? If people have a problem with it they just
:> need to flip open their Python book and take a few seconds to look it up.
:
:The situation where I came across this perceived lack was attempting to
:use Python syntax to explain the algorithms in an algorithms class
:(useful exercise btw, I think the students gained from being able to see
:code that actually worked instead of pseudocode, and Python allows many
:algorithms to be expressed clearly without distracting the students with
:lots of unnecessary pointer-banging).
:
:Some algorithms (especially in dynamic programming) are expressed most
:naturally in terms of integer loops, the ranges of the loops are often
:closed rather than open or sometimes need to go in backwards rather than
:forward order. Python's range() syntax makes this awkward and detracts
:from the reason I wanted to use Python: a simple syntax that expresses
:algorithms cleanly and understandably, that does not force students to
:buy Python books (this is very much not a programming class) or look up
:unfamiliar syntax, and that also is able to run those algorithms
:directly.
You need to separate range() from the loop. After all, range is not
specifically related to loops, it's just handy when doing for loops.
I show this interactively.
"""Loops let you apply an operation repeatedly to a sequence of
values. Conceptually,
For each item in sequence,
print the square of item
To show this using Python, let's first generate the sequence.
The range function is a handy helper: Let's use range to make a list
of numbers that counts down from ten to one by ones: """
>>> seq = range(10, 0, -1)
>>> print seq
[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
""" Now let's see how a loop works: """
>>> for item in seq:
print item ** 2
100
81
64
49
36
25
16
9
4
1
If you'e going on to teach Python, you'd tell 'em those can of course
be combined.
Mats Wichmann
More information about the Python-list
mailing list