python as pen and paper substitute

Dave Angel davea at ieee.org
Wed Apr 7 00:01:58 CEST 2010



Johan Gr wrote:
> Manuel Graune skrev:
>> Thanks for your reply.
>>
>>
>> The output should  1) show manually selected python code and comments
>> (whatever I think is important), 2) show selected results (final and
>> intermediate) and 3) *not* show python code that for someone only
>> interested in the calculation and the results (and probably not
>> knowing python) would just be "noise" (e. g. "import"-statements,
>> actual "print()"-functions, etc.).
>
> Here is my second attempt. This version introduces what I might 
> optimistically call a very simple markup language in the code.
> Printing of source can selectively be turned on and off by inserting 
> lines beginning with "## Ignore" or "## Show" into the source file.
>
>
> ------------------------------
> ## Ignore
> from __future__ import with_statement
> import sys
>
> def print_selected_source():
>     is_printing = True
>     with open(sys.argv[0]) as file:
>         for line in file:
>             if line.startswith("## Ignore"):
>                 is_printing = False
>             elif line.startswith("## Show"):
>                 is_printing = True
>             elif is_printing:
>                 print line,
>
>
> ## Show
> a = 1
> b = 2
> c = 3
> result = a + b
>
> ## Ignore
> print_selected_source()
> print("result     =\t", result)
> print("result + c =\t", result + c)
> ------------------------------
>
> Is this getting closer?
>
> / johan
>
How about simply importing the file with the calculations?  Printing the 
imported file is quite straightforward, and except for maybe skipping 
the import lines that may be at the top (eg. import math), the rest of 
the file could be meaningful for the end user.


That has the advantage that it's easy to have multiple "notepads", but 
only one set of code that runs them.

DaveA



More information about the Python-list mailing list