Vista previa del material en texto
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Optativa 1 TUP: Desarrollo en Python Introducción 2da parte Dr. Cristian Martínez Departamento de Informática Universidad Nacional de Salta Agosto, 2019 C. Martínez (DI-UNSa) Optativa 1 TUP: Desarrollo en Python Agosto, 2019 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Agenda 1 Introducción E/S Listas Matrices Diccionarios 2 Funciones y Módulos Introducción Paso de parámetros Módulos 3 Excepciones C. Martínez (DI-UNSa) Optativa 1 TUP: Desarrollo en Python Agosto, 2019 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Introducción E/S Ingreso de datos por teclado x = raw_input() x = float(raw_input()) x = int(raw_input()) x = raw_input(”ingrese numero: ”) C. Martínez (DI-UNSa) Optativa 1 TUP: Desarrollo en Python Agosto, 2019 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Introducción E/S Salida de datos por pantalla print variable print ” mensaje ” + str(variable) C. Martínez (DI-UNSa) Optativa 1 TUP: Desarrollo en Python Agosto, 2019 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Introducción Listas Es una colección de elementos escalares/objetos ordenada por posición. Las siguientes declaraciones son válidas: lista=[] lista=[’hola’,’chau’,’...’,’;’] C. Martínez (DI-UNSa) Optativa 1 TUP: Desarrollo en Python Agosto, 2019 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Introducción Listas Operaciones Contiene: el operador in permite consultar si un elemento está o no en la lista. Ejemplo: if ’python’ in lista: … Inserción (al final): para agregar un elemento al final, disponemos del método append(). El elemento a agregar debe ser pasado por parámetro. Ejemplo: lista.append(’python’) Inserción: este método permite insertar un elemento a la lista, indicando la posición. Ejemplo: lista.insert(0, ’python’) inserta ’python’ en la primera posición. Borrar: la función del() permite borrar un elemento de la lista, pasando como argumento su posición. Por ejemplo: lista=[10,20,30,40,50] del(lista[1]) Si luego imprimo la lista, no aparece el … Continúa … C. Martínez (DI-UNSa) Optativa 1 TUP: Desarrollo en Python Agosto, 2019 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Introducción Listas Operaciones Cardinal: la función len() devuelve la cantidad de elementos de una lista. La misma debe ser pasada como parámetro. Ordenación: el método sort() permite ordenar elementos de menor a mayor. También se dispone de reverse(). Si bien ordena elementos escalares, es posible incluir una keyword para customizar el ordenamiento. Operaciones como suma (+) y multiplicación (*) también son aplicables a listas. C. Martínez (DI-UNSa) Optativa 1 TUP: Desarrollo en Python Agosto, 2019 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Introducción Listas Comprensión La comprensión de listas es una construcción sintáctica de Python que permite declarar una lista a través de la creación de otra. listaA = [10,20,30,40,50] listaB = [x for x in listaA if x>30] C. Martínez (DI-UNSa) Optativa 1 TUP: Desarrollo en Python Agosto, 2019 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Introducción Matrices Python no posee una estructura de datos específica para manejar datos organizados en forma matricial (bidimensional). Sin embargo, se puede crear una lista de lista. C. Martínez (DI-UNSa) Optativa 1 TUP: Desarrollo en Python Agosto, 2019 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Introducción Matrices matriz = [[1,2,3], [4,5,6], [7,8,9]] En este caso, el elemento (0,0) de la matriz sería matriz[0][0]. La fila 0 de la matriz sería matriz[0]. C. Martínez (DI-UNSa) Optativa 1 TUP: Desarrollo en Python Agosto, 2019 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Introducción Diccionarios Es una colección de elementos los cuales son accedidos por una clave unívoca. A diferencia de las listas (y tuplas), los diccionarios no cuentan con un orden específico. No obstante, es iterable y pueden almacenar elementos de diferentes tipos. C. Martínez (DI-UNSa) Optativa 1 TUP: Desarrollo en Python Agosto, 2019 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Introducción Diccionarios Los diccionarios pueden inicializarse: diccionario={}, sin valores diccionario = {’a’:1, ’b’:2, ’c’:3}, con valores C. Martínez (DI-UNSa) Optativa 1 TUP: Desarrollo en Python Agosto, 2019 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Introducción Diccionarios Para acceder a un elemento, debemos usar la clave respectiva. Ejemplo print(diccionario[’a’]) muestra 1. Para actualizar un elemento, algo similar. Ejemplo: diccionario[’a’]=11. Para añadir un elemento, debemos usar una nueva clave. Ejemplo: diccionario[’d’]=4. Para eliminar un elemento, debemos usar la función del(). Ejemplo: del(diccionario[’d’]). C. Martínez (DI-UNSa) Optativa 1 TUP: Desarrollo en Python Agosto, 2019 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Introducción Diccionarios Los métodos para iterar sobre un diccionario son items(), values() y keys(). El primero da acceso a claves y valores, el segundo devuelve valores y el tercero, claves. C. Martínez (DI-UNSa) Optativa 1 TUP: Desarrollo en Python Agosto, 2019 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Introducción Diccionarios for k, v in diccionario.items(): print str(k) + print(v) for k in diccionario.keys(): print str(k) C. Martínez (DI-UNSa) Optativa 1 TUP: Desarrollo en Python Agosto, 2019 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Introducción Diccionarios Comprensión De forma similar a listas, los diccionarios también pueden ser creados por comprensión. {k:k+1 for k in (10,20,30,40,50)} {40: 41, 10: 11, 20: 21, 50: 51, 30: 31} ???? La comprensión de diccionarios puede servir para inicializar un diccionario con un determinado valor, tomando como claves los elementos de una lista. {clave:1 for clave in [10,20,30,40,50]} genera {40: 1, 10: 1, 20: 1, 50: 1, 30: 1} C. Martínez (DI-UNSa) Optativa 1 TUP: Desarrollo en Python Agosto, 2019 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Funciones y Módulos Introducción En Programación Estructurada, las funciones son uno de los elementos más importantes. Una función es un conjunto de sentencias que puede ser invocada varias veces durante la ejecución de un programa. C. Martínez (DI-UNSa) Optativa 1 TUP: Desarrollo en Python Agosto, 2019 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Funciones y Módulos Introducción Ventajas Minimización de código Aumento de legibilidad Reutilización de código Facilidad para el mantenimiento de código C. Martínez (DI-UNSa) Optativa 1 TUP: Desarrollo en Python Agosto, 2019 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Funciones y Módulos Introducción Internamente al definir una función, Python crea un nuevo objeto y le asigna el nombre dado para la función. Una función puede ser asignada a una variable o ser almacenada en una lista. La palabra reservada def nos servirá para definir una función, a continuación debemos emplear un nombre y opcionalmente, una lista de argumentos. def test(): print ”hola mundo” C. Martínez (DI-UNSa)Optativa 1 TUP: Desarrollo en Python Agosto, 2019 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Funciones y Módulos Introducción Para invocar a una función, basta con usar su nombre seguido de paréntesis (y parámetros actuales si corresponde). def test(): print ”hola mundo” test() En Python, todo módulo es una función. Puede o no devolver resultados a quien lo invoca. C. Martínez (DI-UNSa) Optativa 1 TUP: Desarrollo en Python Agosto, 2019 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Funciones y Módulos Paso de parámetros Las funciones pueden trabajar con parámetros y devolver resultados. En Python, el paso de parámetros implica la asignación de un nombre a un objeto. Esto significa que ocurre por valor o por referencia, si los argumentos son mutables o no. def test(a,b): a = 7 b = 3 a = 3 b = 7 test(a,b) print str(a) + ” ” + str(b) def test2(lista): lista[0]=0 lista=[50,40,30,20,10] test2(lista) print str(lista) C. Martínez (DI-UNSa) Optativa 1 TUP: Desarrollo en Python Agosto, 2019 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Funciones y Módulos Paso de parámetros Valores por defecto y nombres de parámetros En Python podemos asignar un valor a un parámetro de una función. Esto significa que si en la llamada a la función, no se asigna un parámetro actual, se usar el valor por defecto. def test(a,b=1): return (a+b) print test(7) C. Martínez (DI-UNSa) Optativa 1 TUP: Desarrollo en Python Agosto, 2019 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Funciones y Módulos Paso de parámetros Número indefinido de parámetros Python permite definir funciones que acepten un número indefinido de parámetros si necesidad que todos aparezcan en la cabecera. Una alternativa sencilla es mediante (*) lo cual permite que los parámetros actuales pasados a la función los convierta en tupla. def test3(*items): for item in items: print str(item) test3(5,6,7) C. Martínez (DI-UNSa) Optativa 1 TUP: Desarrollo en Python Agosto, 2019 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Funciones y Módulos Paso de parámetros Múltiples valores devueltos por una función Una característica diferente que ofrece Python es la posibilidad de devolver una tupla a quien lo invoca. En ciertos casos, esta característica puede resultar práctica. def test(a): return a+5, a / 2 a = 7 b, c = test(a) print str(b) + print(c) C. Martínez (DI-UNSa) Optativa 1 TUP: Desarrollo en Python Agosto, 2019 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Funciones y Módulos Paso de parámetros Ejercicios Dada una cadena de texto determine si es o no un palíndromo. Dada una lista de palabras, devuelva una lista de palabras y frecuencia respectivamente. Idem al anterior, pero usando un diccionario. Desarrolle el Algoritmo de Euclides en forma iterativa y recursiva. C. Martínez (DI-UNSa) Optativa 1 TUP: Desarrollo en Python Agosto, 2019 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Funciones y Módulos Módulos A medida que el programa crece, más allá de funciones, es necesario disponer de varios ficheros. Como mencionamos anteriormente, legibilidad, mantenibilidad, desarrollo por equipos, son algunos de los beneficios. Cómo hacemos esto en Python? Mediante módulos. C. Martínez (DI-UNSa) Optativa 1 TUP: Desarrollo en Python Agosto, 2019 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Funciones y Módulos Módulos Un módulo es un fichero que tiene código Python pudiendo incluir funciones, clases, variables, etc. El fichero debe guardarse con extensión .py C. Martínez (DI-UNSa) Optativa 1 TUP: Desarrollo en Python Agosto, 2019 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Funciones y Módulos Módulos Para usar un módulo en un programa (o desde otro fichero) se utiliza la instrucción import. Una vez importado, se referencia los atributos del módulo como modulo.atributo. Se usa import …as para evitar conflictos de nombres al usar el módulo. C. Martínez (DI-UNSa) Optativa 1 TUP: Desarrollo en Python Agosto, 2019 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Funciones y Módulos Módulos Módulo Random Este módulo se usa para generar números pseudo-aleatorios. import random random.random() # devuelve un real entre [0,1) random.randint(10,20) # devuelve un entero entre [10,20] random.seed(a=None) # inicializa el generador random.choice([…]) # devuelve un elemento de la lista en forma aleatoria C. Martínez (DI-UNSa) Optativa 1 TUP: Desarrollo en Python Agosto, 2019 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Funciones y Módulos Módulos Módulo Math Este módulo se usa para operaciones matemáticas. import math random.fabs(x) # devuelve el valor absoluto de x random.ceil(x) # devuelve el techo de x (menor entero más grande que x) random.pow(x,y) # devuelve x**y random.sqrt(x) # devuelve la raíz cuadrada Más info en https://docs.python.org/2/library/math.html C. Martínez (DI-UNSa) Optativa 1 TUP: Desarrollo en Python Agosto, 2019 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Funciones y Módulos Módulos Algunos módulos que usaremos Enviar y recibir emails: https://docs.python.org/2/library/email-examples.html Leer, responder tweets: https://pypi.org/project/twitter/ Conectarnos a Mysql: https://pypi.org/project/MySQL-python/ Gráficos con Matplotlib: https://www.pybonacci.org/2012/05/19/manual-de-introduccion-a- matplotlib-pyplot-ii-creando-y-manejando-ventanas-y-configurando-la- sesion/ Conectarnos con Arduino: https://kolwidi.com/blogs/blog- kolwidi/programa-y-controla-con-python-tu-arduino C. Martínez (DI-UNSa) Optativa 1 TUP: Desarrollo en Python Agosto, 2019 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Excepciones El control de excepciones es un mecanismo para detectar eventos y modificar el flujo del programa. Esto es necesario para que cuando un error ocurra en tiempo de ejecución, evitemos que Python aborte la ejecución del programa. C. Martínez (DI-UNSa) Optativa 1 TUP: Desarrollo en Python Agosto, 2019 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Excepciones Ejemplo lista=[0,1,2] print str(lista[10]) Al ejecutar el programa, se muestra el siguiente mensaje IndexError: index out of range Qué hacer? C. Martínez (DI-UNSa) Optativa 1 TUP: Desarrollo en Python Agosto, 2019 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Excepciones try: print str(lista[10]) except IndexError: print ”Error en acceso a lista.” C. Martínez (DI-UNSa) Optativa 1 TUP: Desarrollo en Python Agosto, 2019 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Excepciones Excepción definida por el usuario Es posible crear nuestros propios tipos de excepciones (a diferencia de división por cero, índice fuera de rango, sin conexión a la BD, etc). Para esto debemos crear una subclase de Exception. Lo vemos en la próxima unidad: POO C. Martínez (DI-UNSa) Optativa 1 TUP: Desarrollo en Python Agosto, 2019 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . The End C. Martínez (DI-UNSa) Optativa 1 TUP: Desarrollo en Python Agosto, 2019 Introducción E/S Listas Matrices Diccionarios Funciones y Módulos Introducción Paso de parámetros Módulos Excepciones