Python Programming
overview
by
Aliki Muradova
Technical University of Crete
WHY PYTHON?What advantages has it?
PYTHON PROGRAMMING
The Reasons for Choosing Python
Python is free It is object-oriented It is interpreted It is operating-system independent It has an excellent optimization
module It offers modern COM modules for
interfacing with Solids Works
PYTHON PROGRAMMING
Getting Started with Python
Python(x,y) package from http://code.google.com/p/pythonxy The Python(x,y) package comes with all numerical and scientific Python modules. Python(x,y) is a free scientific and engineering development software for numerical computations, data analysis and data visualization based on Python programming language. Spyder is excellent integrated development environment (IDE). Index for some packages related to python http://pypi.python.org/pypi?%3Aaction=index SfePy is a software for solving systems of coupled partial
differential equations (PDEs) by the finite element method in 2D and 3D http://stepy.org http://plateformesn-m2p.ensam.eu/SphinxDoc/cnem/index.html http://femhub.org/
PYTHON PROGRAMMING
Since Python is an object-oriented language,everything one creates in Python is an object, including integers, float,strings, arrays, etc.
>>> i=4>>> x=3.56>>> a=“hello”
Examples
Associated with objects are methods that act on these objects. ByTyping a ‘dot’ after the object variable name, we can access a listof methods associated with it.
Examples
>>> a=“hello”>>> a.capitalize()‘Hello’
Basic Objects
PYTHON PROGRAMMING
For integers and floats, it is interpreted as the usual addition; for strings it is interpreted in Python as a concatenation. We can reassign the variables.
>>> i=1+2>>> i3>>>a=“hello”+“world!”>>>a“hello world!”>>>a=“hello”>>>b=a>>>print a,bhello hello>>>b=“world!”>>>print a,bhello world!
Examples
Basic Objects
PYTHON PROGRAMMING
A list is a collection of other Python objects. Lists can contain a varietyof objects (integers, strings, etc). They can contain other list objects as in b= [3,a]. Addition of lists leads to a concatenation as in c=a+a. Thereis an access to individual elements of a list is through the [] operator (asIn a[2]). The indexing of individual elements f a list starts from 0.
>>> a=[1, 2, “srt”]>>> b=[3,a] >>> c=a+a>>> print a,b,c[1, 2, “str”][3, [1, 2, “str”]][1, 2, “str”,1, 2, “str”]>>> b=a>>>b[2]=3>>>print a[1, 2, 3]>>> range(5)[0, 1, 2, 3, 4]
Examples
Lists
PYTHON PROGRAMMING
Simple Python program in the Editor (e.g. within Spyder). You can givea name, e.g. PythonObjects.py, ‘py’ extension refers to a Python file.
# Floats and integersprint 2**10 #2 to the power 10x=0.5print 2.5*x/3# Stringss=“Hello World!”print 3*s # implies concatenation# Listsa=[0,1,2,3] # list, not an array or vectorb=range(4) # list, with the same contents as aprint a,bprint 3*a # implies concatenation
Python Scripts
File Edit Format Run Options Windows Help
PythonObjects.py-…
PYTHON PROGRAMMING
The following output appears in the Console window after running the code PythonObjects.py
10240.416666666667Hello World!Hello World!Hello World![0, 1, 2, 3] [0, 1, 2, 3][0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3]
Output
PYTHON PROGRAMMING
The following example illustrates the use of ‘for’, ‘if’ and ‘while’ commands in Python.
# Flow control in Pythonfor i in range(10): # does not include 10 if i<=4: print i, i**2 elif i<=7: print i,i**2+1 else: print i,i**2+2 s='-'while len(s)<25: s+='-'print s
Flow Control
File Edit Format Run Options Windows Help
FControl.py-…
PYTHON PROGRAMMING
The following output appears in the Console window after running the code FControl.py
0 01 12 43 94 165 266 377 508 669 83-------------------------
Output
PYTHON PROGRAMMING
Python provides two commands, namely ‘raw_input’ and ‘input’ for user.The first command returns the user input as a string, while the second Command will interpret and evaluate the input, and return the interpreted value if the evaluation is meaningful.
>>> a=raw_input(“Enter data:”)Enter data: 3*4-5>>> a'3*4-5'>>> a=input(“Enter data:”)Enter data: 3*4-5>>> a7
User Input
PYTHON PROGRAMMING
There are numerical objects (arrays, dot product, etc) and methods that are not part of the core Python language, but are part of the numpyand scipy libraries/modules. They are installed when we install Python. However, in order to access them in a script file we must import them.
# Using Pylabimport pylab as py #(or e.g. import numpy as py)x=py.array([0,1,2,3]) # creates an array from a listy=x+x # this is now an addition not concatenationprint ya=py.pi # the number 3.1415926535897931theta=py.arange(-a,a,0.1) # sample from -pi to +pi using arangez=py.sin(theta) # compute sin(theta) for all samplesprint sz.max() # find the maximum value
Numerical Python
File Edit Format Run Options Windows Help
UsingPylab.py-…
PYTHON PROGRAMMING
The resulting output in the Console window is shown
[0 2 4 6]0.999923257564
Output
PYTHON PROGRAMMING
Python also supports the use of complex numbers through the use of symbol “j” that represents .
>>> a=3+4j>>> a**2‘(-7+24j)'>>> sqrt(a) # it is needed to import Numerical Python before‘(2+1j)
Complex Numbers
Examples
PYTHON PROGRAMMING
There are numerical objects (arrays, dot product, etc) and methods that are not part of the core Python language, but are part of the numpyand scipy libraries/modules. They are installed when we install Python. However, in order to access them in a script file we must import them.
# Linear Algebraimport pylab as py #(or e.g. import numpy as py)A=py.array([[2,-1],[-1,2]]) # creates an array from a listB=py.array([1,1])x=py.solve(A,b)print “Solution for 2x2 problem is” +str(x)
Linear Algebra
File Edit Format Run Options Windows Help
LinearAlgebra.py-…
PYTHON PROGRAMMING
# Linear Algebra (continuation)Lambda, V=py.eig(A)print “Eigenvalues of matrix are” +str(Lambda)Print “Eigenvectors of matrix are \n” +str(V)A=py.rand(50,50)xIn=py.rand(50,1)B=py.dot(A,xIn)xOut=py.solve(A,b)Err=py.norm(xIn-xOut)print “Error for a random matrix solve is “ +str(err)
Linear Algebra (cont.)
File Edit Format Run Options Windows Help
LinearAlgebra.py-…
PYTHON PROGRAMMING
Pylab supports 2D and 3D plotting via matlibplot(http://matplot.souceforge.net) package that can beAccessed through pylab.
Plots
MatLibPlot.py-…
File Edit Format Run Options Windows Help
# 2-D plots using Python/Pylabimport pylab as pypi=py.pix=py.arrange(0,2*pi,pi/50)y=py.sin(x)Z=py.cos(x)py.plot(x,y)py.plot(x,z)py.xlabel(“x”)py.ylabel(“sin(x)&cos(x)”)py.legend(“sin(x)’,’cos(x)”))py.savefig(“Fig2.png”)py.show()
PYTHON PROGRAMMING
The resulting output in the Console window is shown
Plots
PYTHON PROGRAMMING
One can include multiple functions within a single Python file, and Access each one of them individually (a distinct advantage over Matlab).
Modules
Example: a file containing multiple functionsSampleFunctions.py-…
File Edit Format Run Options Windows Help# Module consists of 1-D functions, and derivatives of some of these funcs.
import pylab as pydef f1(x): f=-x*py.exp(-x**2) # returns -x*exp(-x**2) return fdef f1_gradient(x): g=-py.exp(x**2)+2*x*x*py.exp(-x**2) # returns the derivative of f return g def f2_hessian(x): h=6*x*py.exp(x**2)-4*x**3*py.exp(-x**2) # return the second derivative of f
PYTHON PROGRAMMING
The resulting output in the Console window is shown below
>>> import SimpleFunctions>>> SimpleFunctions.f1(2)-0.036631277777468357
Modules
PYTHON PROGRAMMING
Python offers a rich set language features for passing arguments intoFunctions. We consider the function f1 (together with a testing script)
Function Arguments
FunctionsArguments.py-…
File Edit Format Run Options Windows Help
# Example to illustrate function argumentsdef f1(x, a=4, s=‘hello’): print x, a, s
if __name__==“__main__”: f1(0.3) f1(x=0.4) f1(x=0.5,a=5) f1(0.5, a=5) f1(x=0.6,s=“world”) f1(0.6,s=“world”) f1(s=“world”,a=7,x=0.7)
PYTHON PROGRAMMING
The resulting output in the Console window is shown below
0.3 4 hello0.4 4 hello0.5 5 hello0.5 5 hello0.6 4 world0.6 4 world0.7 7 world
Function Arguments
PYTHON PROGRAMMING
There are a few Python ‘quirks’ that one must keep in mind
>>> 5.0/22.5>>> 5/22>>> from __future__ import division>>> 5/22.5>>> A=array([[2,1],[1,2]]); x=array([1,-1])>>> b=A*x>>> barray([[2,-1], [1,-2]]]) # the ‘*’operator is interpreted as >>> b=dot(A,x)>>> barray([1,-1]) # the ‘dot’ operator is interpreted as
Python Quirks
Examples
PYTHON PROGRAMMING
An important concept “class”, in object oriented languages such Python, Is a collection of objects and methods that are closely related.
import pylab as pyclass Polynomial: def __init__ (self,aIn): self.a=py.array(aIn)
Python Class
def evaluate(x): #v=a[0]+a[1]*x+a[2]*x**2+... v,temp=0.0,1.0 for coeff in a: v+=coeff*temp temp*=x return vif __name__=="__main__": p=Polynomial([1,-1,2]) a=p.a print a st=__str__(); print st p1=evaluate(2.0) print p1
import PolynomialClassfrom PolynomialClass import Polynomialdef __str__(): string=str(a[0]) for i, coeff in enumerate(a[1:]): if coeff == 0.0: continue elif (coeff<0): sign=' - ' else: sign=' + ' string+=sign+str(abs(coeff))+’*x^’+str(i+1) return string
PolynomialClass.py
PYTHON PROGRAMMINGSfePy - software for solving PDEs in Python SfePy is a software for solving systems of
coupled partial differential equations (PDEs) by the finite element method in 2D and 3D
SfePy can use many terms to build systems of partial differential equations (PDEs) to be solved
SfePy comes with a number of examples that can get you started
Sources :http://sfepy.org , http://femhub.org/ http://plateformesn- m2p.ensam.eu/SphinxDoc/cnem/index.html
BIOT/BIOT.PYBiot problem - deformable porous mediumm
With using modules/lib.:numpy, sfepy
BIOT/BIOT_NPBC.PYBiot problem - deformable porous medium with the no-penetration boundary condition on boundary regionWith using modules/libraries: sfepy.linalg, sfepy.mechanics.matcoefs
LINEAR_ELASTICITY/LINEAR_VISCOELASTIC.PYLinear viscoelasticity with pressure traction load on surface and constrained to one-dimensional motion.The fading memory terms require an unloaded initial configuration, so the load starts in the second time step.With using modules/libraries
sfepy.base.base sfepy.mechanics.matcoefssfepy.homogenization.utils
PYTHON PROGRAMMING
References
Mark Lutz & David Ascher, Learning Python, O’Reilly, 1999 (Help for Programmers)
Mark Lutz, Programming Python, O’Reilly, 2001 (Solutions for Python Programmers)
Documentations from internet sources
Top Related