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
[email protected]
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