7ar2020 -Jupyter Notebook Viewer
Las operaciones con objetos
Las operaciones con numeros, cadenas y lista
En python las operaciones con valores numéricos vienen dadas por los operadores binarios de: suma(*),
resta(-), producto(*), divisién(/) y divisién entera (1)
In [2]:
print (3/2)
1.5
In [3]:
print (3//2)
1
Otras operaciones son: médulo 0 resto(%), potencia (*). El resultado de aplicar estos operadores a
cantidades numéricas es trivial y siempre el resultado se muesta en el tipo de dato mas general. Pero en
el caso de las cadenas cambia el concepto:
Suma
In [4]:
print (cad1+espaciotcad2)
hola mundo
Producto por entero
In [5]:
print (2*cad2)
mundomundo
Las demas operaciones no estdn definidas. En el caso de las listas ocurre algo parecido:
hitps:Inoviewer upyter.orglurlsid.dropbox.convsihzyBo785v4SIy/Python02 ipynd
ane7ar2020 -Jupyter Notebook Viewer
In [6]:
listat
lista2
print (listal+lista2)
print(2*lista2)
(1, 2, 3, '
C35 4,
Las demas operaciones no estén definidas para las listas.
Métodos para listas
Los métodos son funciones que hereda un tipo de dato por el sélo hecho de ser definidos de una manera
Algunos métodos basicos para cadenas y listas son:
+» lista.append||ista2): Este método agrega al final de la lista la lista2
In [7]:
Listal.append(lista2)
print (lista1)
(1, 2, 3, [°3', ‘4, '5°]]
* lista,pop(indice): Este método elimina el elemento de la lista ubicado por indice, si no se pone indice
se elimina el tltimo
In [8]:
lista1.pop()
print (lista1)
(1, 2, 3]
In [9]:
Lista3=3*listal
print(1ista3)
Lista3.pop(2)
print (lista)
[1, 2, 3, 1, 2, 3, 1, 2, 3]
(1 20252) 3,1, 2 3]
+ lista insert(iX): Este método inserta en la lista el objeto X en el indice i
In [10]:
lista. insert(@,"a")
print(listal)
Ua, 4, 2, 3]
hitps:Inoviewer upyter.orglurlsid.dropbox.convsihzyBo785v4SIy/Python02 ipynd
ane7ar2020 -Jupyter Notebook Viewer
* lista.index(X): Este método devuelve el primer indice en el aparece el objeto X
In [14]:
print(Lista3)
print (1ista3. index(2))
G, 2,4, 2, 3, 4, 2, 3]
1
* lista.count(): este método devuelve el ntimero de veces que aparece el objeto X en la lista
in [12]:
Lista3.count(2)
out[22]:
3
Operaciones con arreglos
Los arreglos permiten operaciones binarias (+,-,*) con otros arreglos o con otros nimeros
In [13]:
from numpy import array
arri=array([1.0,2,3])
rray([3,4,6])
arri+arr2)
» arri-arr2)
Cresta:
(producto: ", arri*arr2)
(C'division: ", arri/arr2)
("potencia: “, arri**2)
(C'suma por un niimero:", 2+arr1)
Cresta por un nimero:”, arr1-2)
C'producto por un ndmero:", 2*arr1)
(division por un ndmero:",arr1/2)
: [4 6 9.)
resta: [-2. -2. -3.]
producto: [ 3. 8. 18.]
division: [ 0.33333333 @.5 a5 ]
potencia: [1. 4. 9.]
suna por un nimero: [ 3. 4. 5.]
resta por un ndmero: [-1. @. 1.]
producto por un ndmero: [ 2. 4. 6.]
divisién por un nimero: [ @.5 1. 1.5]
Productos matriciales
hitps:Inoviewer upyter.orglurlsid.dropbox.convsihzyBo785v4SIy/Python02 ipynd
ane7ar2020 -Jupyter Notebook Viewer
In [15]:
from numpy import dot, cross, multiply
print (dot(arrt,arr2))
print (cross(arri,arr2))
In [16]:
ray({[1,2],[3,4]])
rray([[9,5],[3,5]])
print (m1)
print (dot(m1,m1))
print (multiply(m,m1))
print( mi**2)
(fa 2]
(3 4]]
(C7 10)
{15 22])
(f2 4]
[9 16))
(L1 4]
[9 16])
Elementos basicos de algebra lineal
Los vectores:
In [17]:
ftvector fila
Visarray([[1,2]])
avector culonna
va-array({[1],[2]])
print (V1)
print (V2)
{(1 2]]
(2)
(2]]
Tamajios y dimensiones.
In [18]:
print (V1.shape)
print (V1.size)
qa, 2)
2
La transposicién matriz.T
hitps:Inoviewer upyter.orglurlsid.dropbox.convsihzyBo785v4SIy/Python02 ipynd 4ne7ar2020 -Jupyter Notebook Viewer
In [19]:
print (V1.7)
(2)
(21)
producto interno o matricial matrizA.dot(matrizB)
In [30]:
v1.dot(v2)
out [3]:
array([[5]])
probar los atributos imag, real; y los métodos conj(), cumsum(eje), diagonal(), max(eje),
min(eje),nonzero(), round(decimales), trace(),
Los bucles
Los bucles 0 repeticiones son estructuras que permiten realizar tareas que son iterativas. Principalmente
son las sentencias **for** y la sentencia “*while*, Las estructuras son:
*fort* n *tin** secuencia™™:**
Sentencias1
Sentencias2
nes el contador que itera, secuencia es una lista o arreglo de datos, Sentencias1 y Sentencias2 son las.
6rdenes a iterar.
“while** Condicién *
Sentencias1
Sentencias2
La condicién es una funcién o un valor que puede ser True o False
In [1]:
for i in [1,2,3,4,5]:
print ("éste es el dato:
+i)
éste es el dato:
éste es el dato
éste es el dato:
éste es el dato
éste es el dato:
waune
hitps:Inoviewer upyter.orglurlsid.dropbox.convsihzyBo785v4SIy/Python02 ipynd sina7ar2020 -Jupyter Notebook Viewer
In[ ]:
In [2]:
i-o
while ic=5:
print ("éste es el dato", i)
ieitd
éste es el dato
éste es el dato
éste es el dato
éste es el dato
éste es el dato
éste es el dato
UaWNHO
Las funciones
Una funcién es un fragmento de cédigo con un nombre asociado que realiza una serie de tareas y
devuelve un valor o ejecuta una accién, si no se especifica qué valor devuelve esta retorna None. La
estructura de la funcién es:
*‘def"* nombre_funcion(param1,param2)**:**
Sentencias1
Sentencias2
return valor
La palabra clave return se pone si se quiere que la funcion devuelva un valor si no no se pone.
In [17]:
def parabola(x@, xf, paso):
from numpy import array, arange
par=[]
for i in arange(x0,xf, paso):
par.append([i,i**2])
return array(par)
In [5]:
print (parabola(-2,2,1))
4)
1)
e]
(l-
[-
[
[1 1})
Formas de definir una funcion
Funciones con un numero fijo de parametros:
hitps:Inoviewer upyter.orglurlsid.dropbox.convsihzyBo785v4SIy/Python02 ipynd
ana7ar2020 -Jupyter Notebook Viewer
En este tipo de funciones se definen exactamente los pardmetros que recibe y que son necesaios para su
funcionamiento,
Por ejemplo, Calcule el area de un trapecio de con base mayor B, base menor b y altura h. Usando
B+byh
aa Bab
2
In [6]:
def Area(B,b,h):
return (B+b)*h/2
print("Area de un trapecio ",Area(8,b,h))
Area de un trapecio 4.5
Funciones con numero variable de parametros:
Cuando no se tiene certeza del numero de parametros que se ingresan a una funcién se puede usar el
tipo especial “variable, de esta forma los parametros que se ingresan se convierten automaticamente a
una tupla. Se deben ingresar los parametros separados por comas (,) de otro moso se interpretaria como
una lista, teniendo efetos inesperados.
Por ejemplo, Calcule el perimetro de cualquier poligono
In [10]:
def per(*lado):
perimetro=3
for i in lado:
perinetrow
return perimetro
print (per(1.2,2,3))
6.2
Funciones con parametros con valores por defecto:
En ocasiones las funciones se aplican con argumentos que de entrada pueden tomar un valor particular y
‘que en casos especiales estos cambien o viceversa. En estas situaciones al argument se le puede
asignar un valor con el operador (
Por ejemplo,calcule la longitud de uno de los lados de un triéngulo, el cual por defecto es un tridngulo
rectangulo usando la ley de cosenos
@ +B — 2abcos(7)
hitps:Inoviewer upyter.orglurlsid.dropbox.convsihzyBo785v4SIy/Python02 ipynd m67ar2020 -Jupyter Notebook Viewer
In [12]:
def TL(a,b, ganmaS=90) :
from numpy import pi, cos,sqrt
gamnaR=pi*ganmaS/180
return sqrt(a*#2+b**2-2*a*b*cos(ganmaR) )
print("trigngulo siséceles recténgulo", TL(1,1))
print("tridngulo siséceles acutangulo", TL(1,1,38))
print("triangulo sisdceles obtusangulo”, TL(1,1,ganmaS=100) )
‘tridngulo siséceles rectangulo 1.41421356237
‘tridngulo siséceles acutangulo @.517638090205
‘tridngulo siséceles obtusangulo 1.53208888624
Funci6n con todos los parametros con valores por defecto:
Una funcién también podria contener todos sus argumentos por defecto, en tal caso cada argumento se
define con el operador (=).
Por ejemplo, calcule el area de un paralelogramo cuyo valor por defecto sea el cuadrado de lado 2.
In [14]:
def A2(b=2,h=2):
return b*h
print("Area por defecto",A2())
print("Area con base por defecto”,A2(h=3))
print("Area con altura por defecto” ,A2(2))
print("Area paralelogramo” ,A2(b=1,h=3))
Area por defecto 4
Area con base por defecto 6
‘Area con altura por defecto 4
Area paralelogramo 3
Funciones que devuelven mas de un valor:
En ocasiones se requiere que la funcién devuelva varios resultados de su proceso, en este caso el return
admite que se devuelva una tupla, tambien se podria devolver un objeto lista 0 arreglo con los datos.
Por ejemplo, determine el numero atémico y denominacién de los 5 primeros elementos de la tabla
periddica dado el simbolo quimico
hitps:Inoviewer upyter.orglurlsid.dropbox.convsihzyBo785v4SIy/Python02 ipynd
ana7ar2020 -Jupyter Notebook Viewer
In [18]:
def quim(simb) :
if simb:
nombre="
ume
elif sinb=
nombre=
num=2
elif sim
nombre="itio
num=3
elif sim
nonbre="berilio
num=4
hidrégeno”
else:
nombre="no tengo el elemento o verifique maydsculas”
num=@
return nombre, num
juim("Li")
print ("nombre
yn," yniimero atémico:",na)
n," yndmero atémico:",na)
nombre: litio ,ntimero atémico: 3
nombre: no tengo el elemento o verifique mayusculas ,ntmero atémico: @
Un poco de color a la vida
‘Aunque el proceso de graficacién puede ser una tarea muy elaborada en python; existen modulos que
facilitan la tarea al menos a nivel basico. Este es el caso del médulo pylab. pylab contiene una serie de
definiciones interesantes a la hora de realizar una exploracién global de los datos y la forma de gréficar
resulta tan sencillo como escribir:
API tipo MATLAB
Una forma sencilla para comenzar a graficar usando Matplotlib es usando la API tipo MATLAB que
Matplotiib suministra, a través del médulo ‘matplotlib.pyplot”
Esta API esta disefiada para que sea compatible con las funciones para graficar de MATLAB, de modo
{que resulta facil para aquellos acostumbrados a usar MATLAB.
Importamos entonces el médulo. pyplot
hitps:Inoviewer upyter.orglurlsid.dropbox.convsihzyBo785v4SIy/Python02 ipynd one‘212020 -Jupyter Notebook Viewer
In [12]:
Ymatplotlib inline
import pylab as pl
pl.plot(x,y)
xlabel ("a")
ylabel ("$x"28")
out[12]:
6
rr
2
w
vo 15 20 2 30 35 40
hitps:Inoviewer upyter.orglurlsid.dropbox.convsihzyBo785v4SIy/Python02 ipynd son7ar2020 -Jupyter Notebook Viewer
In [13]:
pl.plot(x,y,'r")
pl.xlabel(*x')
pl.ylabel("y')
pl.title(u'Titulo') # el caracter ‘u’ es necesario para incluir acentos en el texto
pl.show() # muestra el grdfico en una ventana, si no se ha usado %matplotlib inline
Titulo
6
4
2
w
>
6
4
2
vo 15 20 25 30 35 40
In [14]:
pl.subplot(1,2,1)
pl.plot(x, y, ‘r=
pl.subplot(1,2,2)
pl.plot(y, x, ‘g*-
6 40
“ as
2
30
0
8 / 28
6 , 20
Y as
2
“ 10
rT 2 3 #4 5 ob oS
Lo positive de la API tipo MATLAB Pyplot (pylab) es que es facil comenzar si ya se sabe usar MATLAB, y
que requiere un minimo de cédigo para producir graficos simples.
Sin embargo, esta API no es la més adecuada cuando se requiere producir gréficos complejos ylo se
requiere controlar cada aspecto del grafico. En este caso, es recomendable aprender y usar la API gréfica
orientada al objeto de Matplotlib. Es muy poderosa y agradable de usar en caso de requerir figuras
avanzadas, con sub-graficos, objetos insertados y otros componentes.
hitps:Inoviewer upyter.orglurlsid.dropbox.convsihzyBo785v4SIy/Python02 ipynd wie7ar2020 -Jupyter Notebook Viewer
In [18]:
mp=parabola(-10,1,0.5)
pl.plot(mp[:,@],mp[?,2])
pl.xlabel("$x$")
pl.ylabel("$x*2$")
out[18]:
100
»
00 7s 30 25 00 25 50 75 00
Listas iteradas
Cuando se necesita generar una lista 0 arreglo, en la que los indices varian de acuerdo a una regla de
iteracién se puede usar la siguiente regla para generarla:
ta 1D
[regla_de_iteracién iterador filtro]
lista 2D
[lista_iterada] iterador filtro]
In [20]:
[i for i in range(s)]
ut [20]:
[, 1, 2, 3, 4)
hitps:Inoviewer upyter.orglurlsid.dropbox.convsihzyBo785v4SIy/Python02 ipynd sane72020 -Jupyler Notebook Viewer
In [21]:
[[2*(i+3) for i in range(s)] for j in range(3)]
out[2a]:
[l@ 2, 4, 6 8], [2 4, 6 8 10], [4, 6, 8, 18, 12]]
Entonces nuestra parabola se resume a:
In [19]:
from numpy import array, arange
Mp2=array([[i,i**2] for i in arange(x®,xf,paso)]})
pl.plot(MP2[:,@],MP2[:,1])
out[19]:
[]
200
ws
350
ps
wo
15
50
25
oo
Directorio de trabajo
Python pone de forma automatica los archivos que se guerden en un espacio llamado directorio de
trabajo, para saber el directorio de trabajo se debe importar el médulo os
In [21]:
import os
print (os.uname())
print (os.getcwd())
posix.uname_result(sysname="Linux', nodename="BAKENEKO', release='4.10.0
/home/memo/Dropbox/UdeA/Clases
hitps:Inoviewer upyter.orglurlsid.dropbox.convsihzyBo785v4SIy/Python02 ipynd
sana72020 -Jupyler Notebook Viewer
In [22]:
print (os. listdir(os.getewd()))
['prueba.txt', ‘tabla.dat', ‘Python@3.ipynb', ‘Pythoned.ipynb', "Pythone2-
‘os.mkdir("ruta") crea un directorio en la ruta especificada, siempre que se tengan los permisos de escritura
‘0s.rename(ruta1 ,ruta2) renombra archivos 0 directorio en la ruta 1 con la ruta 2
‘0s.rmdir(ruta) borra un directorio en la ruta,
08.remove(futa) borra un archivo en la ruta
Una forma muy sencilla de aprovechar las facilidades del sistema operativo es a través de la funcién
system, a la cual se le ingresa los parmetros a manera de cadena de texto; la desventaja es que es muy
dependiente del sistema operativo. Si el comando se ejecuta la funcién devuelve 0.
In [23]:
os.system("cp archivo2.txt archivo3.txt")
out [23]:
e
In[ ]:
hitps:Inoviewer upyter.orglurlsid.dropbox.convsihzyBo785v4SIy/Python02 ipynd sane