Programación básica en Python
M. en C. Edgardo Adrián Franco Martínez 1
http://computacion.cs.cinvestav.mx/~efranco
@efranco_escom
[email protected]Contenido
Prof. Edgardo Adrián Franco Martínez
Teoría computacional
Programación básica en Python
• Introducción
• Primer programa
• Funciones en Python
• Características de Python
• Tipos de datos
• Estructuras de control
• Archivos
• Mas ayuda
2
Introducción
Prof. Edgardo Adrián Franco Martínez
Teoría computacional
Programación básica en Python
• 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.
3
• Es administrado por la Python Software
Foundation. Posee una licencia de código abierto,
Prof. Edgardo Adrián Franco Martínez
Teoría computacional
Programación básica en Python
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.
4
Primer programa
Prof. Edgardo Adrián Franco Martínez
Teoría computacional
Programación básica en Python
Código
seq1 = 'Hola'
seq2 = ' mundo!'
total = seq1 + seq2
print total
Resultado
Hola mundo!
5
Funciones en Python
Prof. Edgardo Adrián Franco Martínez
Teoría computacional
Programación básica en Python
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
6
Características de Python
Prof. Edgardo Adrián Franco Martínez
Teoría computacional
Programación básica en 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
Leer archivo y cargarlo en lista
Prof. Edgardo Adrián Franco Martínez
Teoría computacional
Programación básica en 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()
8
Biblioteca estándar
Prof. Edgardo Adrián Franco Martínez
Teoría computacional
Programación básica en Python
• 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
Bibliotecas externas
Prof. Edgardo Adrián Franco Martínez
Teoría computacional
Programación básica en Python
• 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
10
– Numpy: cálculos de alta performance
Práctica en intérprete interactivo
Prof. Edgardo Adrián Franco Martínez
Teoría computacional
Programación básica en Python
>>> 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 11
>>> print round(2.932224,2)
2.93
Práctica en intérprete interactivo
Prof. Edgardo Adrián Franco Martínez
Teoría computacional
Programación básica en Python
>>> "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
12
Tipo de datos: Primarios y derivados
Prof. Edgardo Adrián Franco Martínez
Teoría computacional
Programación básica en Python
• 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 – Inmutables
13
>>> type(5)
<type 'int'>
>>> type(5.0)
Prof. Edgardo Adrián Franco Martínez
Teoría computacional
Programación básica en Python
<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) 14
'hela2'
Decimal
Prof. Edgardo Adrián Franco Martínez
Teoría computacional
Programación básica en Python
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
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
str (String o Cadenas)
Prof. Edgardo Adrián Franco Martínez
Teoría computacional
Programación básica en Python
>>> '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!'] 16
http://docs.python.org/library/string.html
Datos ordenados: Listas
Prof. Edgardo Adrián Franco Martínez
Teoría computacional
Programación básica en Python
>>> 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] 17
5
Mas sobre listas:
Prof. Edgardo Adrián Franco Martínez
Teoría computacional
Programación básica en Python
>>> 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 18
True
>>> 'pulpa' in variada
False
Sets (Conjuntos)
Prof. Edgardo Adrián Franco Martínez
Teoría computacional
Programación básica en Python
>>> 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) 19
set(['jose', 'viki', 'natalia'])
Teoría computacional
20
Programación básica en Python
Prof. Edgardo Adrián Franco Martínez
Data I/O
Prof. Edgardo Adrián Franco Martínez
Teoría computacional
Programación básica en Python
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
Estructuras de control de flujo
while: Repetición
for: Repetición
if: Condición
Teoría computacional
22
Programación básica en Python
Prof. Edgardo Adrián Franco Martínez
if
Prof. Edgardo Adrián Franco Martínez
Teoría computacional
Programación básica en Python
if <expresion1>:
<Instrucciones>
elif <expresion2>:
<Instrucciones>
else:
<Instrucciones>
if coord != 'N/A':
year = int(coord[0][-4:])
23
for x in [1, 3, 4]:
for <var> in <iterable>:
for
print x
<instrucciones>
Teoría computacional
24
Programación básica en Python
Prof. Edgardo Adrián Franco Martínez
while mi_set:
while <expresion>:
while
print mi_set.pop()
<instrucciones>
Teoría computacional
25
Programación básica en Python
Prof. Edgardo Adrián Franco Martínez
Archivos
Prof. Edgardo Adrián Franco Martínez
Teoría computacional
Programación básica en Python
Lectura:
(1) Abrir (open)
(2) Leer (read, readlines, readline)
(3) Cerrar (close)
Escritura:
(1) Abrir (open)
(2) Guardar (write)
(3) Cerrar (close)
26
Leyendo un archivo
Prof. Edgardo Adrián Franco Martínez
Teoría computacional
Programación básica en Python
(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. 27
readline(): Devuelve str con una sola linea
readlines(): Devuelve una lista con str por cada línea
fh = open('archivo.txt')
contenido = fh.read()
Prof. Edgardo Adrián Franco Martínez
Teoría computacional
Programación básica en Python
print contenido
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
28
# Para todos:
fh.close()
Apertura secuencial de un archivo
Prof. Edgardo Adrián Franco Martínez
Teoría computacional
Programación básica en Python
fh = open('archivo.txt')
contenido = ''
for line in fh:
contenido += line
fh.close()
29
Escribiendo archivos
Prof. Edgardo Adrián Franco Martínez
Teoría computacional
Programación básica en Python
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
Mas ayuda...
Prof. Edgardo Adrián Franco Martínez
Teoría computacional
Programación básica en Python
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