python elements:
    
*keywords
*symbols
*topics
*modules

variables:
*    case sensitive
*start with a letter not a number
*long names are ok

types and operators:
*    int
*float
*long
*complex a = (3 + 4j) #type (a)


*airthmetic operators
*assignment operators
*comparison operators: < > = >= == != 
*some have overload abilities +

casts:*    int()
*float()
*long()
*hex() #string representation
*oct() #string rep
*str() # for printig numbers and strings

Built in constants:
*Trus
*False

Indenting counts:
*    indent 4 spaces or a tab
*: at end of line indicates start of code block
*requires next line to be indented
*
*code block ends with an outdent
*check your indents!
*
Program structure
*loops
*conditionals, controls
*functions
*
IDLE:
*    syntex color coded
*statement completion
*written in python tkinter gui module???
*
dir()
*gives you a list of the variables in the interpreter
*
*
Comments:
    
    in line text after # is ignored
    
    text within triple quotes
    """ this is a multiline
    comment
    indentation needs to conform """
    
STRINGS:
    sequence of characters such as s = "abcdefg"
    indexed wih [] starting at [0]
    s[-1] refers to last character in string
*    negative indexing starts at last character
*use s[p:q] for string slicing
*s[3:] evaluated as "defg"
*s[:3] eevaluated as "abc" (up to but not 3)
*s[1:-2] evaluated as "bcde"  (up to but not including -2)
 VERY HANDY!
 
 STR Concatenation
 
* first = "John"
*last = "Cleese"
*
*full = first + " " + last
*sp = " "
*full = first + sp + last

"+" operator is Operand Aware
*if both sides are strings, python will concatenate
*if they are numbrs it will add them
*if you mix:  you get an error
*
*
*
*
 
 immutable string:
*     if you want to change a character in a string, assign the new string to the same variable
*
*
automatic memory management
*21st century!
*
*
printing:
    _ = " " # string variable names _
    print ("hello" + _ + "there")
    pi = 3.14159
    print ('The answer is ' + str(pi)) # cast float to string in order to print
    

Conditionals
elif = else if
if a>0:
elif a<0:
else:
    

rint column titles
right align degree values
limit radians to 7 character


str is a class
*see documentation + read up!
*
*
math module
*import math
*
math.sqrt(x)
math.sin(x)
math.cos(x)

use math.pi for defined constant
use math.cos(radian) to compute cosine
print cosine in 3rd column
*align cosine to decimal point
*    

import sys
sys.path.append("/u/efeibush/spline")
import cubic.py # import your own code

Collections -> arrays in other languages

List [] # ordered sequence of stuff
*looks like an array in c
*indexed from [0]
*last index is length [-1]
*
*it is though a class
*with its own methods
*.append()
*.sort()
*
*magic slice operator :
*magic iter() function actually __iter__()


tuple  () # n-tuple, immutable

Declare a List

*x = [14,23, 34 ,42, 50, 59]
*x.append(66)
*
List methods
*append
*extend
*insert
*remove
*sort
*reverse
*index
*count
*
*cList = aList + bList #concatenate lists
*
ragne() function returns a list

range(stop)
range(start, stop)
range(start,stop,incr)

returns list of integres up to but not including stop

built in function
dir(__builtins__)

looping with range

*for in
*for i in range(10):
*for i in dayList:
*
numpy.linspace

import numpy
a = numpy.linspace(1., 2.,11)
for i in a:
    
look up list techniques


store a list of radians and a list of cosines
print the lists
use a range loop instead of while


import numpy  (if you get into large arrays)
ndarray class
princeton.edu/~freibush

delete keyword

del a[3]


unpack a list into variables

name = ["abe", "lincoln"]
*
first, last = name

command line arguments
*import sys
*print (sys.argv)
*sys,argv is a list
*sys.argv[0] has the name of the python lfile
*
*
shell scripting

much better text handling than csh and bsh and shell independent

*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*