Clase 06: Programacin bsica en Python
Prof. Edgardo Adrin Franco Martnez http://computacion.cs.cinvestav.mx/~efranco [email protected]
@efranco_escom
Introduccin Primer programa Funciones en Python Caractersticas de Python Tipos de datos Estructuras de control Archivos Mas ayuda
Teora computacional Clase 06: Programacin bsica en Python Prof. Edgardo Adrin Franco Martnez
Contenido
Python es un lenguaje de programacin de alto nivel cuya filosofa hace hincapi en una sintaxis muy limpia y que favorezca un cdigo legible. Se trata de un lenguaje de programacin multiparadigma ya que soporta orientacin a objetos, programacin imperativa y, en menor medida, programacin funcional y estructurada. Es un lenguaje interpretado, usa tipado dinmico, es fuertemente tipado y multiplataforma.
Teora computacional Clase 06: Programacin bsica en Python Prof. Edgardo Adrin Franco Martnez
Introduccin
Es administrado por la Python Software Foundation. Posee una licencia de cdigo abierto, denominada Python Software Foundation License, que es compatible con la Licencia pblica general de GNU a partir de la versin 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 Matemticas y la Informtica, de los Pases Bajos, como un sucesor del lenguaje de programacin ABC, capaz de manejar excepciones e interactuar con el sistema operativo Amoeba.
Teora computacional Clase 06: Programacin bsica en Python Prof. Edgardo Adrin Franco Martnez
Introduccin
Cdigo
seq1 = 'Hola' seq2 = ' mundo!' total = seq1 + seq2 print total
Resultado
Hola mundo!
5
Teora computacional Clase 06: Programacin bsica en Python Prof. Edgardo Adrin Franco Martnez
Primer programa
Definicin de funciones en Python def fib(n): a, b = 0, 1 for i in range(n): a, b = b, a + b return a
Teora computacional Clase 06: Programacin bsica en Python Prof. Edgardo Adrin Franco Martnez
Funciones en Python
Fcil de aprender y de programar Fcil de leer (similar a pseudocdigo) Interpretado (Rpido para programar) Datos de alto nivel (listas, diccionarios, sets, etc.) Libre y gratuito Multiplataforma (Win, Linux y Mac) Pilas incluidas Gran cantidad de bibliotecas con funciones extras Comunidades de desarrollo
Teora computacional Clase 06: Programacin bsica en Python Prof. Edgardo Adrin Franco Martnez
Caractersticas de Python
# Abrir un archivo de texto . . . file_object = open(FILENAME) # Leer todas las lineas del texto en una lista (similar a un array) lista = file_object.readlines() # Ordenar la lista lista.sort()
Teora computacional Clase 06: Programacin bsica en Python Prof. Edgardo Adrin Franco Martnez
Leer archivo y cargarlo en lista
La biblioteca estndar 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 asincrnico de sockets, clientes HTTP, FTP, SMTP, NNTP, POP3, IMAP4, servidores HTTP, SMTP, debugger, random, curses, logging, compilador, decompilador, CSV, anlisis lexicogrfico, interfaz grfica incorporada, matemtica real y compleja, criptografa, introspeccin, unit testing, doc testing, etc., etc...
Teora computacional Clase 06: Programacin bsica en Python Prof. Edgardo Adrin Franco Martnez
Biblioteca estndar
Bases de datos
MySQL, PostgresSQL, MS SQL, Informix, DB/2, SQLite Qt, GTK, win32, wxWidgets, Cairo Django, Turbogears, Zope, Plone, webpy Biopython: Manejo de secuencias genticas PIL: para trabajar con imgenes PyGame: juegos, presentaciones, grficos SymPy: matemtica simblica Numpy: clculos de alta performance
Interfaces grficas Frameworks Web Y un montn ms de temas...
Teora computacional Clase 06: Programacin bsica en Python Prof. Edgardo Adrin Franco Martnez
Bibliotecas externas
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
Teora computacional Clase 06: Programacin bsica en Python Prof. Edgardo Adrin Franco Martnez
Prctica en intrprete 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
Teora computacional Clase 06: Programacin bsica en Python Prof. Edgardo Adrin Franco Martnez
Prctica en intrprete 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 segn distintos parmetros:
Ordenados (o secuenciales) Desordenados Mutables Inmutables
Teora computacional Clase 06: Programacin bsica en Python Prof. Edgardo Adrin Franco Martnez
Tipo de datos: Primarios y derivados
13
>>> 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'
Teora computacional Clase 06: Programacin bsica en Python Prof. Edgardo Adrin Franco Martnez
14
El problema de los nmeros 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 Alternativamente, para no perder precisin: >>> from decimal import Decimal >>> Decimal('0.1') + Decimal('0.1') + Decimal('0.1') Decimal('0.3') Decimal('0.0') Mas informacin: http://docs.python.org/library/decimal.html
Teora computacional Clase 06: Programacin bsica en Python Prof. Edgardo Adrin Franco Martnez
Decimal
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
Teora computacional Clase 06: Programacin bsica en Python Prof. Edgardo Adrin Franco Martnez
str (String o Cadenas)
16
Datos ordenados: Listas
>>> >>> >>> [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] mi_lista[3] mi_lista[3:5] 5] mi_lista[-2]
Teora computacional Clase 06: Programacin bsica en Python Prof. Edgardo Adrin Franco Martnez
17
Mas sobre listas:
>>> 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
Teora computacional Clase 06: Programacin bsica en Python Prof. Edgardo Adrin Franco Martnez
18
Sets (Conjuntos)
>>> 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'])
Teora computacional Clase 06: Programacin bsica en Python Prof. Edgardo Adrin Franco Martnez
19
20
Teora computacional Clase 06: Programacin bsica en Python Prof. Edgardo Adrin Franco Martnez
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()
Salida:
print Python 3: print() 21
Teora computacional Clase 06: Programacin bsica en Python Prof. Edgardo Adrin Franco Martnez
Data I/O
if: Condicin
for: Repeticin
Estructuras de control de flujo
while: Repeticin
22
Teora computacional Clase 06: Programacin bsica en Python Prof. Edgardo Adrin Franco Martnez
if <expresion1>: <Instrucciones> elif <expresion2>: <Instrucciones> else: <Instrucciones>
if coord != 'N/A': year = int(coord[0][-4:])
23
Teora computacional Clase 06: Programacin bsica en Python Prof. Edgardo Adrin Franco Martnez
if
for
for x in [1, 3, 4]: print x
for <var> in <iterable>: <instrucciones>
24
Teora computacional Clase 06: Programacin bsica en Python Prof. Edgardo Adrin Franco Martnez
while
while <expresion>: <instrucciones>
while mi_set: print mi_set.pop()
25
Teora computacional Clase 06: Programacin bsica en Python Prof. Edgardo Adrin Franco Martnez
Lectura:
(1) Abrir (open) (2) Leer (read, readlines, readline) (3) Cerrar (close)
Escritura:
(1) Abrir (open) (2) Guardar (write) (3) Cerrar (close)
26
Teora computacional Clase 06: Programacin bsica en Python Prof. Edgardo Adrin Franco Martnez
Archivos
(1) La funcin open crea un filehandle.
open(filename[, mode[, bufsize]]) 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 lnea 27
Teora computacional Clase 06: Programacin bsica en Python Prof. Edgardo Adrin Franco Martnez
Leyendo un archivo
fh = open('archivo.txt') contenido = fh.readlines() print contenido
contenido = '' fh = open('archivo.txt') while True: line = fh.readline() contenido += line if line='' break print contenido # Para todos: fh.close()
Teora computacional Clase 06: Programacin bsica en Python Prof. Edgardo Adrin Franco Martnez
fh = open('archivo.txt') contenido = fh.read() print contenido
28
fh = open('archivo.txt') contenido = '' for line in fh: contenido += line fh.close()
Teora computacional Clase 06: Programacin bsica en Python Prof. Edgardo Adrin Franco Martnez
Apertura secuencial de un archivo
29
Modos de escritura: w: Write, graba un archivo nuevo, si existe, borrarlo. a: Append (agregar), agrega informacin al final de un archivo pre-existente. Si no existe, crea uno nuevo (uso tpico: logs).
Ejemplo:
fh = open('/home/yo/archivo.txt','w') fh.write('1\n2\n3\n4\n5\n') fh.close()
Teora computacional Clase 06: Programacin bsica en Python Prof. Edgardo Adrin Franco Martnez
Escribiendo archivos
30
Manual de Python: http://pyspanishdoc.sourceforge.net/tut/tut.html List para incio: http://groups.google.com/group/a-python Mas recursos: http://python.org.ar/pyar/AprendiendoPython
Teora computacional Clase 06: Programacin bsica en Python Prof. Edgardo Adrin Franco Martnez
Mas ayuda...
31