Post on 05-Jul-2018
Programación básica en Python
1M. en C. Edgardo Adrián Franco Martínez
http://computacion.cs.cinvestav.mx/~efranco
@efranco_escom
edfrancom@ipn.mx
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
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
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.
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
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
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
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
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
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
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
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
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
>>> 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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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