programación básica en pythongzip, expresiones regulares, xml (dom y sax), unicode, sgml, html,...

31
Programación básica en Python 1 M. en C. Edgardo Adrián Franco Martínez http://computacion.cs.cinvestav.mx/~efranco @efranco_escom [email protected]

Upload: others

Post on 25-Feb-2021

34 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Programación básica en Pythongzip, expresiones regulares, XML (DOM y SAX), Unicode, SGML, HTML, XHTML, email, manejo asincrónico de ... Teoría computacional Programación básica

Programación básica en Python

1M. en C. Edgardo Adrián Franco Martínez

http://computacion.cs.cinvestav.mx/~efranco

@efranco_escom

[email protected]

Page 2: Programación básica en Pythongzip, expresiones regulares, XML (DOM y SAX), Unicode, SGML, HTML, XHTML, email, manejo asincrónico de ... Teoría computacional Programación básica

Contenido• Introducción

• Primer programa

• Funciones en Python

• Características de Python

• Tipos de datos

• Estructuras de control

• Archivos

• Mas ayuda2

Teo

ría

co

mp

uta

cio

na

l

Pro

gra

ma

ció

n b

ási

ca e

n P

yth

on

Pro

f. E

dga

rdo

Ad

riá

n F

ran

co M

art

íne

z

Page 3: Programación básica en Pythongzip, expresiones regulares, XML (DOM y SAX), Unicode, SGML, HTML, XHTML, email, manejo asincrónico de ... Teoría computacional Programación básica

Introducción• Python es un lenguaje de programación de alto

nivel cuya filosofía hace hincapié en una sintaxismuy limpia y que favorezca un código legible.

• Se trata de un lenguaje de programaciónmultiparadigma ya que soporta orientación aobjetos, programación imperativa y, en menormedida, programación funcional y estructurada.

• Es un lenguaje interpretado, usa tipado dinámico,es fuertemente tipado y multiplataforma.

3

Teo

ría

co

mp

uta

cio

na

l

Pro

gra

ma

ció

n b

ási

ca e

n P

yth

on

Pro

f. E

dga

rdo

Ad

riá

n F

ran

co M

art

íne

z

Page 4: Programación básica en Pythongzip, expresiones regulares, XML (DOM y SAX), Unicode, SGML, HTML, XHTML, email, manejo asincrónico de ... Teoría computacional Programación básica

4

Teo

ría

co

mp

uta

cio

na

l

Pro

gra

ma

ció

n b

ási

ca e

n P

yth

on

Pro

f. E

dga

rdo

Ad

riá

n F

ran

co M

art

íne

z

• Es administrado por la Python SoftwareFoundation. Posee una licencia de código abierto,denominada Python Software Foundation License,que es compatible con la Licencia pública generalde GNU a partir de la versión 2.1.1, eincompatible en ciertas versiones anteriores.

• Python fue creado a finales de los ochenta porGuido van Rossum en el Centro para lasMatemáticas y la Informática, de los Países Bajos,como un sucesor del lenguaje de programaciónABC, capaz de manejar excepciones e interactuarcon el sistema operativo Amoeba.

Page 5: Programación básica en Pythongzip, expresiones regulares, XML (DOM y SAX), Unicode, SGML, HTML, XHTML, email, manejo asincrónico de ... Teoría computacional Programación básica

Primer programa

seq1 = 'Hola'seq2 = ' mundo!'total = seq1 + seq2print total

Código

Resultado

Hola mundo!

5

Teo

ría

co

mp

uta

cio

na

l

Pro

gra

ma

ció

n b

ási

ca e

n P

yth

on

Pro

f. E

dga

rdo

Ad

riá

n F

ran

co M

art

íne

z

Page 6: Programación básica en Pythongzip, expresiones regulares, XML (DOM y SAX), Unicode, SGML, HTML, XHTML, email, manejo asincrónico de ... Teoría computacional Programación básica

Funciones en PythonDefinición de funciones en Python

def fib(n):a, b = 0, 1for i in range(n):

a, b = b, a + breturn a

6

Teo

ría

co

mp

uta

cio

na

l

Pro

gra

ma

ció

n b

ási

ca e

n P

yth

on

Pro

f. E

dga

rdo

Ad

riá

n F

ran

co M

art

íne

z

Page 7: Programación básica en Pythongzip, expresiones regulares, XML (DOM y SAX), Unicode, SGML, HTML, XHTML, email, manejo asincrónico de ... Teoría computacional Programación básica

Características de Python

• 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 7

Teo

ría

co

mp

uta

cio

na

l

Pro

gra

ma

ció

n b

ási

ca e

n P

yth

on

Pro

f. E

dga

rdo

Ad

riá

n F

ran

co M

art

íne

z

Page 8: Programación básica en Pythongzip, expresiones regulares, XML (DOM y SAX), Unicode, SGML, HTML, XHTML, email, manejo asincrónico de ... Teoría computacional Programación básica

Leer archivo y cargarlo en lista

• # 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()

8

Teo

ría

co

mp

uta

cio

na

l

Pro

gra

ma

ció

n b

ási

ca e

n P

yth

on

Pro

f. E

dga

rdo

Ad

riá

n F

ran

co M

art

íne

z

Page 9: Programación básica en Pythongzip, expresiones regulares, XML (DOM y SAX), Unicode, SGML, HTML, XHTML, email, manejo asincrónico de ... Teoría computacional Programación básica

Biblioteca estándar

• 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...

9

Teo

ría

co

mp

uta

cio

na

l

Pro

gra

ma

ció

n b

ási

ca e

n P

yth

on

Pro

f. E

dga

rdo

Ad

riá

n F

ran

co M

art

íne

z

Page 10: Programación básica en Pythongzip, expresiones regulares, XML (DOM y SAX), Unicode, SGML, HTML, XHTML, email, manejo asincrónico de ... Teoría computacional Programación básica

Bibliotecas externas• Bases de datos

– MySQL, PostgresSQL, MS SQL, Informix, DB/2, SQLite

• Interfaces gráficas

– Qt, GTK, win32, wxWidgets, Cairo

• Frameworks Web

– 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 performance10

Teo

ría

co

mp

uta

cio

na

l

Pro

gra

ma

ció

n b

ási

ca e

n P

yth

on

Pro

f. E

dga

rdo

Ad

riá

n F

ran

co M

art

íne

z

Page 11: Programación básica en Pythongzip, expresiones regulares, XML (DOM y SAX), Unicode, SGML, HTML, XHTML, email, manejo asincrónico de ... Teoría computacional Programación básica

Práctica en intérprete interactivo>>> 2+24>>> _*416>>> 10/33>>> float(10)/33.3333333333333335>>> 10.0/33.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

11

Teo

ría

co

mp

uta

cio

na

l

Pro

gra

ma

ció

n b

ási

ca e

n P

yth

on

Pro

f. E

dga

rdo

Ad

riá

n F

ran

co M

art

íne

z

Page 12: Programación básica en Pythongzip, expresiones regulares, XML (DOM y SAX), Unicode, SGML, HTML, XHTML, email, manejo asincrónico de ... Teoría computacional Programación básica

Práctica en intérprete interactivo

>>> "hola" + " mundo!"'hola mundo!'>>> ("hola" + " mundo!").upper()'HOLA MUNDO!'>>> ' 123'.strip()'123'>>> 123.strip()

File "<stdin>", line 1123.strip()

^SyntaxError: invalid syntax>>> >>> str(123)'123'>>> int('123')123

12

Teo

ría

co

mp

uta

cio

na

l

Pro

gra

ma

ció

n b

ási

ca e

n P

yth

on

Pro

f. E

dga

rdo

Ad

riá

n F

ran

co M

art

íne

z

Page 13: Programación básica en Pythongzip, expresiones regulares, XML (DOM y SAX), Unicode, SGML, HTML, XHTML, email, manejo asincrónico de ... Teoría computacional Programación básica

Tipo de datos: Primarios y derivados

• 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:• Ordenados (o secuenciales)

• Desordenados

• Mutables – Inmutables13

Teo

ría

co

mp

uta

cio

na

l

Pro

gra

ma

ció

n b

ási

ca e

n P

yth

on

Pro

f. E

dga

rdo

Ad

riá

n F

ran

co M

art

íne

z

Page 14: Programación básica en Pythongzip, expresiones regulares, XML (DOM y SAX), Unicode, SGML, HTML, XHTML, email, manejo asincrónico de ... Teoría computacional Programación básica

>>> type(5)<type 'int'>>>> type(5.0)<type 'float'>>>> type(5 + 5.0)<type 'float'>>>> 5 + 5.010.0>>> type(2+3j)<type 'complex'>>>> (2+3j).real2.0>>> (2+3j).imag3.0>>> type('Hola!')<type 'str'>>>> 'hola' + ' mundo!''hola mundo!'>>> 'hela' + 2Traceback (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

Teo

ría

co

mp

uta

cio

na

l

Pro

gra

ma

ció

n b

ási

ca e

n P

yth

on

Pro

f. E

dga

rdo

Ad

riá

n F

ran

co M

art

íne

z

Page 15: Programación básica en Pythongzip, expresiones regulares, XML (DOM y SAX), Unicode, SGML, HTML, XHTML, email, manejo asincrónico de ... Teoría computacional Programación básica

Decimal

El “problema” de los números flotantes:

>>> 0.1 + 0.1 + 0.1 - 0.35.5511151231257827e-17

Una manera de evitar esto:

>>> round(0.1 + 0.1 + 0.1 - 0.3,1)0.0

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

Teo

ría

co

mp

uta

cio

na

l

Pro

gra

ma

ció

n b

ási

ca e

n P

yth

on

Pro

f. E

dga

rdo

Ad

riá

n F

ran

co M

art

íne

z

Page 16: Programación básica en Pythongzip, expresiones regulares, XML (DOM y SAX), Unicode, SGML, HTML, XHTML, email, manejo asincrónico de ... Teoría computacional Programación básica

str (String o Cadenas)>>> '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

16

Teo

ría

co

mp

uta

cio

na

l

Pro

gra

ma

ció

n b

ási

ca e

n P

yth

on

Pro

f. E

dga

rdo

Ad

riá

n F

ran

co M

art

íne

z

Page 17: Programación básica en Pythongzip, expresiones regulares, XML (DOM y SAX), Unicode, SGML, HTML, XHTML, email, manejo asincrónico de ... Teoría computacional Programación básica

Datosordenados: Listas>>> mi_lista = [1,2,3]>>> mi_lista.append(5)>>> mi_lista[1, 2, 3, 5]>>> mi_lista.pop()5>>> mi_lista[1, 2, 3]>>> mi_lista + [4][1, 2, 3, 4]>>> mi_lista[1, 2, 3]>>> mi_lista = mi_lista + [4]>>> mi_lista[1, 2, 3, 4]>>> mi_lista.extend([5,6])>>> mi_lista[1, 2, 3, 4, 5, 6]>>> mi_lista[0]1>>> mi_lista[3]4>>> mi_lista[3:5][4, 5]>>> mi_lista[-2]5

17

Teo

ría

co

mp

uta

cio

na

l

Pro

gra

ma

ció

n b

ási

ca e

n P

yth

on

Pro

f. E

dga

rdo

Ad

riá

n F

ran

co M

art

íne

z

Page 18: Programación básica en Pythongzip, expresiones regulares, XML (DOM y SAX), Unicode, SGML, HTML, XHTML, email, manejo asincrónico de ... Teoría computacional Programación básica

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 variadaTrue>>> 'pulpa' in variadaFalse

18

Teo

ría

co

mp

uta

cio

na

l

Pro

gra

ma

ció

n b

ási

ca e

n P

yth

on

Pro

f. E

dga

rdo

Ad

riá

n F

ran

co M

art

íne

z

Page 19: Programación básica en Pythongzip, expresiones regulares, XML (DOM y SAX), Unicode, SGML, HTML, XHTML, email, manejo asincrónico de ... Teoría computacional Programación básica

Sets (Conjuntos)>>> mi_set = set()>>> mi_set.add('jose')>>> mi_set.add('juan')>>> mi_set.add('natalia')>>> mi_set.add('viki')>>> mi_setset(['jose', 'juan', 'viki', 'natalia'])>>> mi_set.pop()'jose'>>> mi_setset(['juan', 'viki', 'natalia'])>>> mi_set.add('jose')>>> mi_setset(['jose', 'juan', 'viki', 'natalia'])>>> mi_set.add('jose')>>> mi_setset(['jose', 'juan', 'viki', 'natalia'])>>> otro_set = set(['juan','karina','diana'])>>> otro_setset(['diana', 'juan', 'karina'])>>> mi_set.intersection(otro_set)set(['juan'])>>> mi_set.union(otro_set)set(['jose', 'viki', 'natalia', 'diana', 'juan', 'k arina'])>>> mi_set.difference(otro_set)set(['jose', 'viki', 'natalia'])

19

Teo

ría

co

mp

uta

cio

na

l

Pro

gra

ma

ció

n b

ási

ca e

n P

yth

on

Pro

f. E

dga

rdo

Ad

riá

n F

ran

co M

art

íne

z

Page 20: Programación básica en Pythongzip, expresiones regulares, XML (DOM y SAX), Unicode, SGML, HTML, XHTML, email, manejo asincrónico de ... Teoría computacional Programación básica

20 Teoría computacional

Programación básica en Python

Prof. Edgardo Adrián Franco Martínez

Page 21: Programación básica en Pythongzip, expresiones regulares, XML (DOM y SAX), Unicode, SGML, HTML, XHTML, email, manejo asincrónico de ... Teoría computacional Programación básica

Data I/OEntrada:input('prompt')raw_input('prompt')

>>> edad = input('Ingrese la edad: ')Ingrese la edad: 33>>> edad33>>> edad = raw_input('Ingrese la edad: ')Ingrese la edad: 33>>> edad'33'Python 3: input() es raw_input()

Salida:printPython 3: print()

21

Teo

ría

co

mp

uta

cio

na

l

Pro

gra

ma

ció

n b

ási

ca e

n P

yth

on

Pro

f. E

dga

rdo

Ad

riá

n F

ran

co M

art

íne

z

Page 22: Programación básica en Pythongzip, expresiones regulares, XML (DOM y SAX), Unicode, SGML, HTML, XHTML, email, manejo asincrónico de ... Teoría computacional Programación básica

Estru

ctura

s de

con

trol d

e flu

jo

if: C

ondició

n

for

: Repe

tición

while

: Re

petició

n

22 Teoría computacional

Programación básica en Python

Prof. Edgardo Adrián Franco Martínez

Page 23: Programación básica en Pythongzip, expresiones regulares, XML (DOM y SAX), Unicode, SGML, HTML, XHTML, email, manejo asincrónico de ... Teoría computacional Programación básica

if

if <expresion1>:<Instrucciones>

elif <expresion2>:<Instrucciones>

else :<Instrucciones>

if coord != 'N/A':year = int (coord [0][ -4:])

23

Teo

ría

co

mp

uta

cio

na

l

Pro

gra

ma

ció

n b

ási

ca e

n P

yth

on

Pro

f. E

dga

rdo

Ad

riá

n F

ran

co M

art

íne

z

Page 24: Programación básica en Pythongzip, expresiones regulares, XML (DOM y SAX), Unicode, SGML, HTML, XHTML, email, manejo asincrónico de ... Teoría computacional Programación básica

for

for

<va

r> in

<ite

rab

le>

:<

instru

ccion

es>

for

x in [1

, 3, 4

]:p

rint

x

24 Teoría computacional

Programación básica en Python

Prof. Edgardo Adrián Franco Martínez

Page 25: Programación básica en Pythongzip, expresiones regulares, XML (DOM y SAX), Unicode, SGML, HTML, XHTML, email, manejo asincrónico de ... Teoría computacional Programación básica

wh

ile

while

<exp

resio

n>

:<

instru

cciones>

while

mi_

set

:prin

tm

i_se

t.po

p()

25 Teoría computacional

Programación básica en Python

Prof. Edgardo Adrián Franco Martínez

Page 26: Programación básica en Pythongzip, expresiones regulares, XML (DOM y SAX), Unicode, SGML, HTML, XHTML, email, manejo asincrónico de ... Teoría computacional Programación básica

Archivos

Lectura:

(1) Abrir (open)(2) Leer (read, readlines, readline)(3) Cerrar (close)

Escritura:

(1) Abrir (open)(2) Guardar (write)(3) Cerrar (close)

26

Teo

ría

co

mp

uta

cio

na

l

Pro

gra

ma

ció

n b

ási

ca e

n P

yth

on

Pro

f. E

dga

rdo

Ad

riá

n F

ran

co M

art

íne

z

Page 27: Programación básica en Pythongzip, expresiones regulares, XML (DOM y SAX), Unicode, SGML, HTML, XHTML, email, manejo asincrónico de ... Teoría computacional Programación básica

Leyendo un archivo

(1)

La función 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 lineareadlines(): Devuelve una lista con str por cada línea

27

Teo

ría

co

mp

uta

cio

na

l

Pro

gra

ma

ció

n b

ási

ca e

n P

yth

on

Pro

f. E

dga

rdo

Ad

riá

n F

ran

co M

art

íne

z

Page 28: Programación básica en Pythongzip, expresiones regulares, XML (DOM y SAX), Unicode, SGML, HTML, XHTML, email, manejo asincrónico de ... Teoría computacional Programación básica

fh = open('archivo.txt')contenido = fh.read()print contenido

fh = open('archivo.txt')contenido = fh.readlines()print contenido

contenido = ''fh = open('archivo.txt')while True:

line = fh.readline()contenido += lineif line=''

breakprint contenido

# Para todos:fh.close()

28

Teo

ría

co

mp

uta

cio

na

l

Pro

gra

ma

ció

n b

ási

ca e

n P

yth

on

Pro

f. E

dga

rdo

Ad

riá

n F

ran

co M

art

íne

z

Page 29: Programación básica en Pythongzip, expresiones regulares, XML (DOM y SAX), Unicode, SGML, HTML, XHTML, email, manejo asincrónico de ... Teoría computacional Programación básica

fh = open('archivo.txt')

contenido = ''for line in fh :

contenido += linefh.close ()

Apertura secuencial de un archivo

29

Teo

ría

co

mp

uta

cio

na

l

Pro

gra

ma

ció

n b

ási

ca e

n P

yth

on

Pro

f. E

dga

rdo

Ad

riá

n F

ran

co M

art

íne

z

Page 30: Programación básica en Pythongzip, expresiones regulares, XML (DOM y SAX), Unicode, SGML, HTML, XHTML, email, manejo asincrónico de ... Teoría computacional Programación básica

Escribiendo archivos

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:

fh = open('/home/yo/archivo.txt','w')fh.write('1\n2\n3\n4\n5\n')fh.close()

30

Teo

ría

co

mp

uta

cio

na

l

Pro

gra

ma

ció

n b

ási

ca e

n P

yth

on

Pro

f. E

dga

rdo

Ad

riá

n F

ran

co M

art

íne

z

Page 31: Programación básica en Pythongzip, expresiones regulares, XML (DOM y SAX), Unicode, SGML, HTML, XHTML, email, manejo asincrónico de ... Teoría computacional Programación básica

Mas ayuda...

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

31

Teo

ría

co

mp

uta

cio

na

l

Pro

gra

ma

ció

n b

ási

ca e

n P

yth

on

Pro

f. E

dga

rdo

Ad

riá

n F

ran

co M

art

íne

z