Download Programación básica en Python - Web personal de Edgardo Adrián
Document related concepts
no text concepts found
Transcript
Programación básica en Python M. en C. Edgardo Adrián Franco Martínez http://computacion.cs.cinvestav.mx/~efranco @efranco_escom edfrancom@ipn.mx 1 • Introducción • Primer programa • Funciones en Python • Características de Python • Tipos de datos • Estructuras de control • Archivos • Mas ayuda Teoría computacional Programación básica en Python Prof. Edgardo Adrián Franco Martínez Contenido 2 • Python es un lenguaje de programación de alto nivel cuya filosofía hace hincapié en una sintaxis muy limpia y que favorezca un código legible. • Se trata de un lenguaje de programación multiparadigma ya que soporta orientación a objetos, programación imperativa y, en menor medida, programación funcional y estructurada. • Es un lenguaje interpretado, usa tipado dinámico, es fuertemente tipado y multiplataforma. Teoría computacional Programación básica en Python Prof. Edgardo Adrián Franco Martínez Introducción 3 Es administrado por la Python Software Foundation. Posee una licencia de código abierto, denominada Python Software Foundation License, que es compatible con la Licencia pública general de GNU a partir de la versión 2.1.1, e incompatible en ciertas versiones anteriores. • Python fue creado a finales de los ochenta por Guido van Rossum en el Centro para las Matemáticas y la Informática, de los Países Bajos, como un sucesor del lenguaje de programación ABC, capaz de manejar excepciones e interactuar con el sistema operativo Amoeba. Teoría computacional Programación básica en Python Prof. Edgardo Adrián Franco Martínez • 4 Código seq1 = 'Hola' seq2 = ' mundo!' total = seq1 + seq2 print total Teoría computacional Programación básica en Python Prof. Edgardo Adrián Franco Martínez Primer programa Resultado Hola mundo! 5 Definición de funciones en Python def fib(n): a, b = 0, 1 for i in range(n): a, b = b, a + b return a Teoría computacional Programación básica en Python Prof. Edgardo Adrián Franco Martínez Funciones en Python 6 • • • • • • • • • Fácil de aprender y de programar Fácil de leer (similar a pseudocódigo) Interpretado (Rápido para programar) Datos de alto nivel (listas, diccionarios, conjuntos, etc.) Libre y gratuito Multiplataforma (Windos, Linux y Mac) Pilas incluidas Gran cantidad de bibliotecas con funciones extras Comunidades de desarrollo Teoría computacional Programación básica en Python Prof. Edgardo Adrián Franco Martínez Características de Python 7 • # Abrir un archivo de texto . . . • file_object = open(FILENAME) • # Leer todas las lineas del texto en una lista (similar a un array) Teoría computacional Programación básica en Python Prof. Edgardo Adrián Franco Martínez Leer archivo y cargarlo en lista • lista = file_object.readlines() • # Ordenar la lista • lista.sort() 8 • La biblioteca estándar ayuda con: • Servicios del sistema, fecha y hora, subprocesos, sockets, i18n y l10n, base de datos, threads, formatos zip, bzip2, gzip, expresiones regulares, XML (DOM y SAX), Unicode, SGML, HTML, XHTML, email, manejo asincrónico de sockets, clientes HTTP, FTP, SMTP, NNTP, POP3, IMAP4, servidores HTTP, SMTP, debugger, random, curses, logging, compilador, decompilador, CSV, análisis lexicográfico, interfaz gráfica incorporada, matemática real y compleja, criptografía, introspección, unit testing, doc testing, etc., etc... Teoría computacional Programación básica en Python Prof. Edgardo Adrián Franco Martínez Biblioteca estándar 9 • Bases de datos – • Interfaces gráficas – • Qt, GTK, win32, wxWidgets, Cairo Frameworks Web – • MySQL, PostgresSQL, MS SQL, Informix, DB/2, SQLite Teoría computacional Programación básica en Python Prof. Edgardo Adrián Franco Martínez Bibliotecas externas Django, Turbogears, Zope, Plone, webpy Y un montón más de temas... – – – – – Biopython: Manejo de secuencias genéticas PIL: para trabajar con imágenes PyGame: juegos, presentaciones, gráficos SymPy: matemática simbólica Numpy: cálculos de alta performance 10 >>> 2+2 4 >>> _*4 16 >>> 10/3 3 >>> float(10)/3 3.3333333333333335 >>> 10.0/3 3.3333333333333335 >>> int(2.1) 2 >>> int(2.9) 2 >>> round(2.9) 3.0 >>> int(round(2.9)) 3 >>> round(2.932224,2) 2.9300000000000002 >>> print round(2.932224,2) 2.93 Teoría computacional Programación básica en Python Prof. Edgardo Adrián Franco Martínez Práctica en intérprete interactivo 11 >>> "hola" + " mundo!" 'hola mundo!' >>> ("hola" + " mundo!").upper() 'HOLA MUNDO!' >>> ' 123'.strip() '123' >>> 123.strip() File "<stdin>", line 1 123.strip() ^ SyntaxError: invalid syntax >>> >>> str(123) '123' >>> int('123') 123 Teoría computacional Programación básica en Python Prof. Edgardo Adrián Franco Martínez Práctica en intérprete interactivo 12 • Primarios (o primitivos): No necesitan de otro tipo de datos, como numericos (int, float, decimal, complex) y str (cadenas). • Derivados: Agrupan a alguno de los anteriores, como listas, diccionarios, tuplas, etc. • Se pueden subclasificar según distintos parámetros: • • • Teoría computacional Programación básica en Python Prof. Edgardo Adrián Franco Martínez Tipo de datos: Primarios y derivados Ordenados (o secuenciales) Desordenados Mutables – Inmutables 13 Teoría computacional Programación básica en Python Prof. Edgardo Adrián Franco Martínez >>> type(5) <type 'int'> >>> type(5.0) <type 'float'> >>> type(5 + 5.0) <type 'float'> >>> 5 + 5.0 10.0 >>> type(2+3j) <type 'complex'> >>> (2+3j).real 2.0 >>> (2+3j).imag 3.0 >>> type('Hola!') <type 'str'> >>> 'hola' + ' mundo!' 'hola mundo!' >>> 'hela' + 2 Traceback (most recent call last): File "<pyshell#32>", line 1, in <module> 'hela' + 2 TypeError: cannot concatenate 'str' and 'int' objects >>> 'hela' + str(2) 'hela2' 14 El “problema” de los números flotantes: >>> 0.1 + 0.1 + 0.1 - 0.3 5.5511151231257827e-17 Una manera de evitar esto: >>> round(0.1 + 0.1 + 0.1 - 0.3,1) 0.0 Teoría computacional Programación básica en Python Prof. Edgardo Adrián Franco Martínez Decimal Alternativamente, para no perder precisión: >>> from decimal import Decimal >>> Decimal('0.1') + Decimal('0.1') + Decimal('0.1') Decimal('0.3') Decimal('0.0') Mas información: http://docs.python.org/library/decimal.html 15 >>> 'Hola mundo!' 'Hola mundo!' >>> a='Hola mundo!' >>> len(a) 11 >>> a.lower() 'hola mundo!' >>> a.count('o') 2 >>> a.find('H') 0 >>> a.find('mundo') 5 >>> a.find('e') -1 >>> a.index(' ') 4 >>> a.index('e') Traceback (most recent call last): File "<pyshell#52>", line 1, in <module> a.index('e') ValueError: substring not found >>> a.split(' ') ['Hola', 'mundo!'] http://docs.python.org/library/string.html Teoría computacional Programación básica en Python Prof. Edgardo Adrián Franco Martínez str (String o Cadenas) 16 >>> >>> >>> [1, >>> 5 >>> [1, >>> [1, >>> [1, >>> >>> [1, >>> >>> [1, >>> 1 >>> 4 >>> [4, >>> 5 mi_lista = [1,2,3] mi_lista.append(5) mi_lista 2, 3, 5] mi_lista.pop() mi_lista 2, 3] mi_lista + [4] 2, 3, 4] mi_lista 2, 3] mi_lista = mi_lista + [4] mi_lista 2, 3, 4] mi_lista.extend([5,6]) mi_lista 2, 3, 4, 5, 6] mi_lista[0] Teoría computacional Programación básica en Python Prof. Edgardo Adrián Franco Martínez Datos ordenados: Listas mi_lista[3] mi_lista[3:5] 5] mi_lista[-2] 17 >>> variada = ['boga', 'cornalito', 'tararira'] >>> variada[2] 'tararira' >>> variada[2][2:8] 'rarira' >>> variada[2][2:] 'rarira' >>> variada.append('pulpo') >>> variada ['boga', 'cornalito', 'tararira', 'pulpo'] >>> variada.remove('cornalito') >>> variada ['boga', 'tararira', 'pulpo'] >>> variada.sort() >>> variada ['boga', 'pulpo', 'tararira'] >>> variada.index('pulpo') 1 >>> variada.index('pulpa') Traceback (most recent call last): File "<pyshell#33>", line 1, in <module> variada.index('pulpa') ValueError: list.index(x): x not in list >>> 'pulpo' in variada True >>> 'pulpa' in variada False Teoría computacional Programación básica en Python Prof. Edgardo Adrián Franco Martínez Mas sobre listas: 18 >>> mi_set = set() >>> mi_set.add('jose') >>> mi_set.add('juan') >>> mi_set.add('natalia') >>> mi_set.add('viki') >>> mi_set set(['jose', 'juan', 'viki', 'natalia']) >>> mi_set.pop() 'jose' >>> mi_set set(['juan', 'viki', 'natalia']) >>> mi_set.add('jose') >>> mi_set set(['jose', 'juan', 'viki', 'natalia']) >>> mi_set.add('jose') >>> mi_set set(['jose', 'juan', 'viki', 'natalia']) >>> otro_set = set(['juan','karina','diana']) >>> otro_set set(['diana', 'juan', 'karina']) >>> mi_set.intersection(otro_set) set(['juan']) >>> mi_set.union(otro_set) set(['jose', 'viki', 'natalia', 'diana', 'juan', 'karina']) >>> mi_set.difference(otro_set) set(['jose', 'viki', 'natalia']) Teoría computacional Programación básica en Python Prof. Edgardo Adrián Franco Martínez Sets (Conjuntos) 19 20 Teoría computacional Programación básica en Python Prof. Edgardo Adrián Franco Martínez Entrada: input('prompt') raw_input('prompt') >>> edad = input('Ingrese la edad: ') Ingrese la edad: 33 >>> edad 33 >>> edad = raw_input('Ingrese la edad: ') Ingrese la edad: 33 >>> edad '33' Python 3: input() es raw_input() Teoría computacional Programación básica en Python Prof. Edgardo Adrián Franco Martínez Data I/O Salida: print Python 3: print() 21 Estructuras de control de flujo if: Condición for: Repetición while: Repetición 22 Teoría computacional Programación básica en Python Prof. Edgardo Adrián Franco Martínez if <expresion1>: <Instrucciones> elif <expresion2>: <Instrucciones> else: <Instrucciones> Teoría computacional Programación básica en Python Prof. Edgardo Adrián Franco Martínez if if coord != 'N/A': year = int(coord[0][-4:]) 23 for for <var> in <iterable>: <instrucciones> for x in [1, 3, 4]: print x 24 Teoría computacional Programación básica en Python Prof. Edgardo Adrián Franco Martínez while while <expresion>: <instrucciones> while mi_set: print mi_set.pop() 25 Teoría computacional Programación básica en Python Prof. Edgardo Adrián Franco Martínez Lectura: (1) Abrir (open) (2) Leer (read, readlines, readline) (3) Cerrar (close) Teoría computacional Programación básica en Python Prof. Edgardo Adrián Franco Martínez Archivos Escritura: (1) Abrir (open) (2) Guardar (write) (3) Cerrar (close) 26 (1) La función open crea un “filehandle”. open(filename[, mode[, bufsize]]) Teoría computacional Programación básica en Python Prof. Edgardo Adrián Franco Martínez Leyendo un archivo Ej: fh = open('mi_archivo.txt','r') (2) read(n): Lee n bytes, por defecto lee el archivo entero. readline(): Devuelve str con una sola linea readlines(): Devuelve una lista con str por cada línea 27 fh = open('archivo.txt') contenido = fh.readlines() print contenido Teoría computacional Programación básica en Python Prof. Edgardo Adrián Franco Martínez fh = open('archivo.txt') contenido = fh.read() print contenido contenido = '' fh = open('archivo.txt') while True: line = fh.readline() contenido += line if line='' break print contenido 28 # Para todos: fh.close() fh = open('archivo.txt') contenido = '' for line in fh: contenido += line fh.close() Teoría computacional Programación básica en Python Prof. Edgardo Adrián Franco Martínez Apertura secuencial de un archivo 29 Modos de escritura: w: Write, graba un archivo nuevo, si existe, borrarlo. a: Append (agregar), agrega información al final de un archivo pre-existente. Si no existe, crea uno nuevo (uso típico: logs). Ejemplo: Teoría computacional Programación básica en Python Prof. Edgardo Adrián Franco Martínez Escribiendo archivos fh = open('/home/yo/archivo.txt','w') fh.write('1\n2\n3\n4\n5\n') fh.close() 30 Documentación de Python: http://docs.python.org/2/ Manual de Python: http://pyspanishdoc.sourceforge.net/tut/tut.html Mas recursos: http://python.org.ar/pyar/AprendiendoPython Teoría computacional Programación básica en Python Prof. Edgardo Adrián Franco Martínez Mas ayuda... 31