Introduccion Operadores Variables y formatos Scripts y funciones
Metodos Numericos con Pythony los Super Amigos
Departamento de MatematicasFacultad de Ciencias Exactas y Naturales
Universidad de Antioquia
Copyleft «2010. Reproduccion permitida bajo los
terminos de la licencia de documentacion libre GNU.
Introduccion Operadores Variables y formatos Scripts y funciones
Contenido
1 Introduccion
2 Operadores
3 Variables y formatos
4 Scripts y funciones
Introduccion Operadores Variables y formatos Scripts y funciones
Aspectos generales
http://www.python.org/
Lenguaje de programacion de alto nivel, interpretado
Creado por Guido van Rossum a principios de los anos 90
Multiplataforma (UNIX, Solaris, Linux, DOS, Windows, OS/2, Mac OS, etc.)
Software libre: Python Software Foundation License (PSFL)
Tipado dinamico
Fuertemente tipado
Orientado a objetos
Introduccion Operadores Variables y formatos Scripts y funciones
Los Super Amigos (software adicional para Python)
NumPy: paquete fundamental para computacion cientıfica
SciPy: librerıa para computacion cientıfica (extiende a NumPy)
matplotlib: librerıa para graficos 2D (soporta graficos 3D tambien)
Mayavi: librerıa para graficos y visualizacion de datos 3D
iPython: consola interactiva para python
Introduccion Operadores Variables y formatos Scripts y funciones
Lenguajes de programacion mas “populares”
Imagen tomada de http://www.tiobe.com/
Introduccion Operadores Variables y formatos Scripts y funciones
Instalacion de la Liga de la Justicia
GNU/Linux (distribuciones basadas en debian):
sudo apt-get install ipython python-scipy python-matplotlib mayavi2 \
python-sympy cython python-networkx python-pexpect python-nose \
python-setuptools python-sphinx python-pygments \
python-twisted python-foolscap
sudo apt-get build-dep python python-scipy python-matplotlib mayavi2 \
cython
Windows y Mac OSX:
Enthought Python Distribution
http://www.enthought.com/products/epd.php
(distribucion gratuita para fines academicos)
Introduccion Operadores Variables y formatos Scripts y funciones
Iniciando sesion en GNU/Linux
Sesion de Python
$ python
Python 2.5.2 (r252:60911, Jan 20 2010, 23:33:04)
[GCC 4.3.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
Sesion de iPython
$ ipython
Python 2.5.2 (r252:60911, Jan 20 2010, 23:33:04)
Type "copyright", "credits" or "license" for more information.
IPython 0.8.4 -- An enhanced Interactive Python.
? -> Introduction and overview of IPython’s features.
%quickref -> Quick reference.
help -> Python’s own help system.
object? -> Details about ’object’. ?object also works, ?? prints more.
In [1]:
Introduccion Operadores Variables y formatos Scripts y funciones
Iniciando sesion de iPython en Windows
Introduccion Operadores Variables y formatos Scripts y funciones
Operadores aritmeticos
Operador Operacion Ejemplo Resultado
** Potencia 2∗∗3 8* Multiplicacion 7 ∗ 3 21/ Division 10.5/2 5.25// Division entera 10.5//2 5.0+ Suma 3 + 4 7- Resta 6 − 8 −2% Modulo (residuo) 15%6 3
Operador Jerarquıa
() (mayor)**
*, /, //, % �
+, - (menor)
In [1]: 3+4Out[1]: 7
In [2]: 3/4Out[2]: 0
In [3]: 3.0/4.0Out[3]: 0.75
In [4]: 5.0/10*2+5Out[4]: 6
In [5]: 5.0/(10*2+5)Out[5]: 0.20000000000000001
In [6]: 2**3**2Out[6]: 512
In [7]: (2**3)**2Out[7]: 64
In [8]: 17 % 3 % 2Out[8]: 0
Introduccion Operadores Variables y formatos Scripts y funciones
Operadores relacionales (de comparacion)
Tipos de datos logicos:
False (0)
True (1)
Operador Operacion Ejemplo Resultado
== Igual a 4 == 5 False
!= Diferente de 2!=3 True
< Menor que 10 < 4 False
> Mayor que 5>-4 True
<= Menor o igual que 7<=7 True
>= Mayor o igual que 3.5 >= 10 False
In [9]: 1+2>7-3Out[9]: False
In [10]: 1<2<3Out[10]: True
In [11]: 1>2==2<3Out[11]: False
In [12]: 1>(2==2)<3Out[12]: True
In [13]: 3>4<5Out[13]: False
In [14]: 1.0/3<0.33333Out[14]: False
In [15]: 5.0/3>=11/7.0Out[15]: True
In [16]: 2**(2/3)<3**(3/4)Out[16]: True
Introduccion Operadores Variables y formatos Scripts y funciones
Operadores logicos (booleanos)
Operador Operacion Ejemplo Resultado
and conjuncion False and True False
or disyuncion False or True True
not negacion not True False
A B A and B A or B not A
True True True True False
True False False True False
False True False True True
False False False False True
Operador Jerarquıa
() (mayor)**
*, /, //, %==, !=, <, >, <=, >= �
notandor (menor)
In [17]: False and True or TrueOut[17]: True
In [18]: 0 and 1 or 1Out[18]: 1
In [19]: 0 and (1 or 1)Out[19]: 0
In [20]: 5*4 > 4 and 0 < 3Out[20]: True
In [21]: True or (2 == 1+2) == TrueOut[21]: True
In [22]: 2**(3 and 0/5)>45 % 6Out[22]: False
Introduccion Operadores Variables y formatos Scripts y funciones
Tipos de datos
Tipo Descripcion bits Rango Ejemplo
bool booleano 8 sin rango True o False
int entero 16h
−215, 215
− 1i
327
long int entero largo 32h
0, 232− 1
i
24334253234L
float real (punto flotante) 32h
−231, 231
− 1i
3.1416
complex complejo 32h
0, 232− 1
i
3.0 + 4.0j
str string (cadena) 32h
−231, 231
− 1i
’hola’
tuple tupla 32h
3.4 × 10−38, 3.4 × 1038
i
(1, ’aja’, 2.0)
list lista 64h
1.7 × 10−308, 1.7 × 10308
i
[1, ’aja’, 2.0]
dict diccionario 80h
3.4 × 10−4932, 3.4 × 104932
i
’a’:7.0, 23: True
Introduccion Operadores Variables y formatos Scripts y funciones
Identificadores y palabras reservadas
Palabras reservadas
and del for is raise assertelif from lambda return break elseglobal not try class except ifor while continue exec import passyield def finally in print del
Identificadores
Nombres que hacen referencia a los objetos que componen un programa:constantes, variables, funciones, etc.
Reglas para construir identificadores:
El primer caracter debe ser una letra o el caracter de subrayado
El primer caracter puede ir seguido de un numero variable de dıgitosnumericos, letras o caracteres de subrayado
No pueden utilizarse espacios en blanco, ni sımbolos de puntuacion
Python distingue mayusculas y minusculas
No pueden utilizarse palabras reservadas del lenguaje
Introduccion Operadores Variables y formatos Scripts y funciones
Variables
In [23]: base = 2
In [24]: print base2
In [25]: print "base"Out[25]: base
In [26]: base = base + 1
In [27]: baseOut[27]: 3
In [28]: alt = 4
In [29]: area = base*alt; a=3
In [30]: a=2*a
In [31]: area == 2*aOut[31]: True
In [32]: x = "uno"; y = "dos"
In [33]: xOut[33]: ’uno’
In [34]: print xuno
In [35]: x+yOut[35]: ’unodos’
In [36]: print x+yunodos
Introduccion Operadores Variables y formatos Scripts y funciones
Listas y tuplas
In [37]: milista=[a, "hola", 3.0, True]
In [38]: milistaOut[38]: [3, ’hola’, 3.0, True]
In [39]: milista[0]Out[39]: 3
In [40]: milista[1]Out[40]: ’hola’
In [41]: milista[2]Out[41]: 3.0
In [42]: milista[1:3]Out[42]: [’hola’, 3.0]
In [43]: milista[0] = 2.0
In [44]: milistaOut[44]: [2.0, ’hola’, 3.0, True]
In [45]: milista[-1]Out[45]: True
In [46]: milista.append("otro")
In [47]: milistaOut[47]: [2.0,’hola’, 3.0, True,’otro’]
In [48]: milista[:2]Out[48]: [2.0, ’hola’]
In [49]: milista[1:]Out[49]: [’hola’, 3.0, True, ’otro’]
In [50]: lista2[]
Introduccion Operadores Variables y formatos Scripts y funciones
Listas y tuplas
In [51]: milista=[a, "hola", 3.0, True]
In [52]: lista2Out[52]: []
In [53]: lista2.insert(1,"a")
In [54]: lista2Out[54]: [’a’]
In [55]: lista2.insert(2,"b")
In [56]: lista2Out[56]: [’a’, ’b’]
In [57]: lt = (1, 2, True, "python")
In [58]: ltOut[58]: (1, 2, True, ’python’)
In [59]: lt[0]=3-----------------------------------------------------TypeError Traceback (most recent call last)
TypeError: ’tuple’ object does not support item
assignment
In [60]: 3 in ltOut[60]: False
In [61]: range(8)Out[61]: [0, 1, 2, 3, 4, 5, 6, 7]
In [62]: range(3,7)Out[62]: [3, 4, 5, 6]
In [63]: range(4,10,2)Out[63]: [4, 6, 8]
Introduccion Operadores Variables y formatos Scripts y funciones
Conversiones de tipo, funciones basicas
Operacion Descripcion
int(x) Convierte x a enterolong(x) Convierte x a entero largofloat(x) Convierte x a punto flotante
complex(x) Convierte x al complejo x+0j
complex(x,y) Convierte al complejo x+yj
Funcion Descripcion
abs(x) Valor absoluto de x
max(sucesion) Mayor elemento de sucesionmin(sucesion) Menor elemento de sucesionround(x,n) Redondea al decimal ncmp(x,y) Retorna -1, 0, 1 si x<y, x==y, x>y
In [64]: x = -5
In [65]: y = 4
In [66]: p = 3.1416
In [67]: z = ’6.3’
In [68]: print int(p)3
In [69]: abs(x)5
In [70]: print float(z)6.0
In [71]: complex(x)Out[60]: (-5+0j)
In [72]: complex(x,y)Out[72]: (-5+4j)
In [73]: print round(p,2)3.14
In [74]: cmp(x,y)Out[74]: -1
Introduccion Operadores Variables y formatos Scripts y funciones
Instrucciones de entrada/salida
Entrada de datos:
raw input("entrada"): lee una lınea de entrada que es convertida a string
eval(string): convierte string en un valor numerico
In [75]: a = raw input("Ingrese a: ")Ingrese a: 2
In [76]: print aOut[76]: 2
In [77]: aOut[77]: ’2’
In [78]: type(a)Out[78]: <type ’str’>
In [79]: b = eval(a)
In [80]: print b, type(b)Out[80]: 2 <type ’int’>
In [81]:s=eval(raw input("Ingrese s: "))Ingrese a: 2*3
In [82]: print s, type(s)Out[82]: 6 <type ’int’>
In [83]:m=eval(raw input("Ingrese m: "))Ingrese a: hola
-----------------------------------------------------
TypeError Traceback (most recent call last)
TypeError: name ’hola’ is not defined
Introduccion Operadores Variables y formatos Scripts y funciones
Instrucciones de entrada/salida
Salida de datos:
print objeto1, objeto2, ...
print " %formato1 %formato2 · · · " % tupla
Entero d
Punto flotante f
Notacion exponencial e
In [84]: u = 6543
In [85]: v = 1234.56789
In [86]: print u, v6543 1234.56789
In [87]: print "u = %6d" % uu = 6543
In [88]: print "u = %06d" % uu = 006543
In [88]: print "v = %7.2f" % vv = 1234.57
In [88]: print "v = %9.2f" % vv = 1234.57
In [88]: print "v = %7.8f" % vv = 1234.56789000
In [81]: print "v = %.2e" % vv = 1.23e+03
In [81]: print "u= %6d y v= %8.4e" % (u,v)u= 6543 y v=1.2346e+03
Introduccion Operadores Variables y formatos Scripts y funciones
Programas
Scripts:
Archivos de texto plano sin formato
Tiene extension .py
Contienen una sucesion de comandos de Python
No tienen parametros (“argumentos”) de entrada ni de salida
Las variables definidas en los scripts son globales
Funciones:
Secuencia de sentencias que ejecuta una operacion deseada y tiene unnombre
Las funciones tienen sintaxis especial
Tienen parametros (“argumentos”) de entrada y de salida
Las variables definidas en funciones son locales
Introduccion Operadores Variables y formatos Scripts y funciones
Editores en Linux
Gedit: http://projects.gnome.org/gedit/
Introduccion Operadores Variables y formatos Scripts y funciones
Editores en Linux
Pymacs (Emacs + Python): http://pymacs.progiciels-bpi.ca/
Introduccion Operadores Variables y formatos Scripts y funciones
Editores en Linux
Geany: http://www.geany.org/
Introduccion Operadores Variables y formatos Scripts y funciones
Editores en Linux
SPE (Stani’s Python Editor): http://pythonide.blogspot.com/
Introduccion Operadores Variables y formatos Scripts y funciones
Editores en Linux
Erik: http://eric-ide.python-projects.org/
Introduccion Operadores Variables y formatos Scripts y funciones
Editores en Windows
Gedit: http://projects.gnome.org/gedit/
Introduccion Operadores Variables y formatos Scripts y funciones
Editores en Windows
IDLE
Introduccion Operadores Variables y formatos Scripts y funciones
HolaMundo1.py
# Progarma hola mundo, version "emo"
print "¡Hola, maldito mundo!"
HolaMundo2.py
#! /usr/bin/env python
print "¡Hola, maldito mundo!"
invitado@matematicas06:∼/scripts$ ls -ltotal 12-rw-r--r-- 1 invitado invitado 68 2010-02-03 14:02 HolaMundo1.py-rw-r--r-- 1 invitado invitado 54 2010-02-03 14:03 HolaMundo2.py
invitado@matematicas06:∼/scripts$ chmod a+x HolaMundo2.py
invitado@matematicas06:∼/scripts$ ls -ltotal 12-rw-r--r-- 1 invitado invitado 68 2010-02-03 14:02 HolaMundo1.py-rwxr-xr-x 1 invitado invitado 54 2010-02-03 14:03 HolaMundo2.py
invitado@matematicas06:∼/scripts$ python HolaMundo1.pyHola, maldito mundo!
invitado@matematicas06:∼/scripts$ ./HolaMundo2.pyHola, maldito mundo!
Introduccion Operadores Variables y formatos Scripts y funciones
HolaMundo3.py
#! /usr/bin/env python# Programa hola mundo version matematica
import sys, math # carga sistema y modulo matematicor = float(sys.argv[1]) # extrae argumento de la linea de comandoss = math.cos(r)print "Hola, maldito Mundo! cos("+ str(r) + ")="+ str(s)
invitado@matematicas06:∼/scripts$ ls -ltotal 12-rw-r--r-- 1 invitado invitado 68 2010-02-03 14:02 HolaMundo1.py-rw-r--r-- 1 invitado invitado 54 2010-02-03 14:03 HolaMundo2.py-rw-r--r-- 1 invitado invitado 267 2010-02-03 14:06 HolaMundo3.py
invitado@matematicas06:∼/scripts$ chmod a+x HolaMundo3.py
invitado@matematicas06:∼/scripts$ ls -l HolaMundo3.py-rwxr-xr-x 1 aleph aleph 267 2010-02-03 14:06 HolaMundo3.py
invitado@matematicas06:∼/scripts$ ./HolaMundo3.py 0Hola, maldito Mundo! cos(0.0)=1.0
Introduccion Operadores Variables y formatos Scripts y funciones
Ejemplos de scripts
Ejemplo 4.1 (Promedio de dos numeros)
Escriba un programa (script) en Python que reciba como entradas dos numeros Ay B y calcule su promedio.
Solucion
promedio.py
# Calcula el promedio de dos numeros
# Lee los valores de A y BA = eval(raw input("Ingrese A: "))B = eval(raw input("Ingrese B: "))
# Calcula el promedioPROM = (A+B)/2.0;
# Imprime el promedioprint "El promedio de %f y %f es %f" % (A, B, PROM)
Introduccion Operadores Variables y formatos Scripts y funciones
Ejemplos de scripts
Ejemplo 4.2 (Area y perımetro de un rectangulo)
Escriba un programa (script) en Python tal que dado como datos la base y laaltura de un rectangulo, calcule su perımetro y area.
Solucion
rectangulo.py
# Calcula el area y perimetro de un rectangulo
% Lee los valores de la base y la altura
BASE = eval(raw input("Ingrese la base: "))
ALTURA = eval(raw input("Ingrese la altura: "))
AREA = BASE*ALTURA;
PERIMETRO = 2.0*(BASE+ALTURA);
print "El area es %f y el perımetro es %f" % AREA, PERIMETRO);
Introduccion Operadores Variables y formatos Scripts y funciones
Funciones
Sintaxis de una funcion
def NOMBRE( LISTA DE PARAMETROS ):
SENTENCIAS
In [94]: def suma(x,y):...: print x+y...:...:
In [95]: suma(2,3)5
In [96]: a = -4
In [97]: b = 5
In [98]: suma(a,b)1
In [99]: suma(abs(-2),-3)-1
In [100]: def deja espacio():...: print # linea vacia...:...:
In [101]: 8*3; deja espacio(); 2*3Out[101]: 24
Out[101]: 6
In [102]: deja espacio(3)-----------------------------------------------------TypeError Traceback (most recent call last)
TypeError: deja espacio() takes no arguments (1 given)
Introduccion Operadores Variables y formatos Scripts y funciones
Funciones definidas en scripts
Ejemplo 4.3 (Promedio de dos numeros)
Escriba una funcion en Python que reciba como entradas dos numeros A y B ycalcule su promedio.
Solucion
promedio.py
# Funcion que calcula el promedio de dos numeros
def prom(A,B):
C = (A+B)/2.0
print "El promedio de %f y %f es %f" % (A, B, C)
In [103]: from promedio import *
In [104]: prom(2,3)El promedio de 2.000000 y 3.000000 es 2.500000
Introduccion Operadores Variables y formatos Scripts y funciones
Ejemplos de scripts
Ejemplo 4.4 (Area y perımetro de un rectangulo)
Escriba un script en Python que contenga funciones que calculen el
perımetro y el area de un rectangulo, dados su base y altura.
Solucion
rectangulo.py
def area(base,altura):
ar = base*altura
print "El area es %f" % ar
def perimetro(base,altura):
per = 2.0*(base+altura)
print "El perimetro es %f" % per
In [103]:from rectangulofun import area
In [104]: area(2,3)El area es 6.000000
In [107]: ar-----------------------------------------------------NameError Traceback (most recent call last)
NameError: name ’ar’ is not defined
In [108]: perimetro(2,3)-----------------------------------------------------NameError Traceback (most recent call last)
NameError: name ’perimetro’ is not defined
In [103]:from rectangulofun importperimetro
In [104]: perimetro(2,3)El perimetro es 10.000000
Introduccion Operadores Variables y formatos Scripts y funciones
Referencias
J. Elkner, A. Downey, C. MeyersHow to Think Like a Computer Scientist: Learning with Python
http://openbookproject.net//thinkCSpy/index.html
R. GonzalesPython para todos
http://mundogeek.net/tutorial-python/
J. KiusalaasNumerical Methods in Engineering with Python
Cambridge University Press, 2005
Top Related