Repaso Python 2

You might also like

Download as pdf
Download as pdf
You are on page 1of 14
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 ane 7ar2020 -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 ane 7ar2020 -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 ane 7ar2020 -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 4ne 7ar2020 -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 sina 7ar2020 -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 ana 7ar2020 -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 m6 7ar2020 -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 ana 7ar2020 -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 son 7ar2020 -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 wie 7ar2020 -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 sane 72020 -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 sana 72020 -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

You might also like