# [Edu-sig] what you can do in a shell

kirby urner kirby.urner at gmail.com
Thu Sep 28 02:54:21 CEST 2006

```> This is the beauty of the Python shell - a math student doesn't have to know any Python
> syntax to be able to follow this.  They can just see it as active Algebra.

Yes, exactly:  Pythonic Algebra is naturally self-teaching, plus you
can do it without some adult standing over you, watching you make
mistakes.  The Python interpreter already knows you'll make mistakes,

Branching off on your idea of generating ordered pairs, I've seen
various trix like these:

IDLE 1.2b2

>>> def f(x):  return x # simplest linear

>>> [(x,f(x)) for x in range(5)]
[(0, 0), (1, 1), (2, 2), (3, 3), (4, 4)]

>>> def g(x,m=1,b=0):  return m*x + b # slope-intercept linear

>>> [(x , g( x, 0.25, 2)) for x in range(5)]

[(0, 2.0), (1, 2.25), (2, 2.5), (3, 2.75), (4, 3.0)]

Then if you want a VPython plot, you can do something like:

>>> import stickworks # code given earlier this month

>>> def domain():
x = -5
while True:
yield x
x += .5

>>> dom = domain()
>>> plot = stickworks.xyplotter(dom, g)
>>> plot.next() # VPython window appears with line segment
>>> plot.next() # line segment gets longer
>>> plot.next() # and longer...
>>> plot.next() # and longer...
...

Except that's not the smartest way to go (e.g. no axes shown yet).
Better to just modify stickworks.testme.

def testme():
"""
>>> from stickworks import testme
Visual 2005-01-08
>>> testme()

See:
http://www.4dsolutions.net/ocn/graphics/cosines.png
"""

from math import cos

def f(x):  return cos(x)

def dgen(start, step):
while True:
yield start
start += step

d = dgen(-5, 0.1)
axes(-5,1,0)
graph = xyplotter(d, f)

for i in xrange(100):
graph.next()

Kirby
```