Actualizado el 21 de Marzo del 2018 (Publicado el 8 de Marzo del 2018)
471 visualizaciones desde el 8 de Marzo del 2018
446,2 KB
55 paginas
Creado hace 18a (14/11/2005)
Programaci´on en Python
Jes´us Espino Garc´ıa
Grupo de usuarios de Linux
Universidad Carlos III de Madrid.
18 de Noviembre de 2004
Jes´us Espino Garc´ıa (GUL UC3M)
Programaci´on en Python
18 de Noviembre de 2004
2 / 1
Introducci´on.
Jes´us Espino Garc´ıa (GUL UC3M)
Programaci´on en Python
18 de Noviembre de 2004
3 / 1
¿Qu´e es Python?
Es un lenguaje de programaci´on.
Fue creado en las navidades de 1989.
Su autor es Guido van Rossum.
En su origen era un lenguaje para la gesti´on de Amoeba.
Basado en ABC y Modula-3
En febrero de 1991 pasa a USENET
A partir de ah´ı el lenguaje no ha dejado de crecer.
Actualmente tenemos la versi´on 2.3.
Jes´us Espino Garc´ıa (GUL UC3M)
Programaci´on en Python
18 de Noviembre de 2004
4 / 1
¿Por qu´e Python?
Python es f´acil de aprender.
Python es sencillo de usar.
Python es potente.
Jes´us Espino Garc´ıa (GUL UC3M)
Programaci´on en Python
18 de Noviembre de 2004
5 / 1
¿Por qu´e es especial?
Es libre (y gratis).
Es f´acil de escribir.
Es f´acil de leer.
Es f´acil de mantener.
Es de prop´osito general.
Jes´us Espino Garc´ıa (GUL UC3M)
Programaci´on en Python
18 de Noviembre de 2004
6 / 1
¿Por qu´e es especial?
Alto nivel.
Orientado a objetos.
Interpretado
Introspectivo
Jes´us Espino Garc´ıa (GUL UC3M)
Programaci´on en Python
18 de Noviembre de 2004
7 / 1
¿Por qu´e es especial?
Extensible.
Completo.
Din´amico.
Robusto.
M´ultiples plataformas.
Colaborativo.
Jes´us Espino Garc´ıa (GUL UC3M)
Programaci´on en Python
18 de Noviembre de 2004
8 / 1
¿Por qu´e es especial?
Herencia m´ultiple.
Funciones sobre listas.
Funciones lambda
. . .
Jes´us Espino Garc´ıa (GUL UC3M)
Programaci´on en Python
18 de Noviembre de 2004
9 / 1
¿Qui´en lo usa?
Bea Systems
Walt Disney Company
GE Aircraft Engines
Google
Hewlett-Packard
IBM
Microsoft
NASA
Nacional Center for Atmosferic Research
Red Hat
U.S. National Weather Service
U.S. Navy
Xerox
Yahoo!
Zope Corporation
. . .
Jes´us Espino Garc´ıa (GUL UC3M)
Programaci´on en Python
18 de Noviembre de 2004
10 / 1
Python.
Jes´us Espino Garc´ıa (GUL UC3M)
Programaci´on en Python
18 de Noviembre de 2004
11 / 1
El int´erprete
$ python
Python 2.3.4 (#2, Sep 24 2004, 08:39:09)
[GCC 3.3.4 (Debian 1:3.3.4-12)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
Jes´us Espino Garc´ıa (GUL UC3M)
Programaci´on en Python
18 de Noviembre de 2004
12 / 1
Definici´on de variables
No hace falta definir variables.
Los tipos de datos son din´amicos.
Es sensible may´usculas y min´usculas.
>>> a=1
>>> b=1.0
>>> c="1.0"
>>> d=’hola’
>>> e=5j
Jes´us Espino Garc´ıa (GUL UC3M)
Programaci´on en Python
18 de Noviembre de 2004
13 / 1
Tipos de datos b´asicos
Enteros.
Coma flotante.
N´umeros complejos.
N´umeros de precisi´on arbitraria.
Cadenas de caracteres.
Tuplas.
Listas.
Diccionarios.
Son din´amicos.
Jes´us Espino Garc´ıa (GUL UC3M)
Programaci´on en Python
18 de Noviembre de 2004
14 / 1
Listas
Se identifica por []
Lista vac´ıa: []
Elementos separados por comas
[1,2,3,4]
Elementos heterog´eneos
[1,(2,4),"avi´on",["gul","linux","python"]]
Acceso a un elemento
lista[posici´on]
Listas dentro de listas
lista[indice1][indice2]..[indiceN]
Jes´us Espino Garc´ıa (GUL UC3M)
Programaci´on en Python
18 de Noviembre de 2004
15 / 1
Listas
Los ´ındices pueden contar tambi´en desde el final
Jes´us Espino Garc´ıa (GUL UC3M)
Programaci´on en Python
18 de Noviembre de 2004
16 / 1
0-54-13-22-31-4 Listas
Tambi´en se pueden seleccionar fragmentos
>>> lista = range(5)
>>> lista
[0, 1, 2, 3, 4]
>>> lista[1:-2]
[1, 2]
Devuelve una lista.
Jes´us Espino Garc´ıa (GUL UC3M)
Programaci´on en Python
18 de Noviembre de 2004
17 / 1
Tuplas
Similares a las estructuras de C.
No hace falta definirlas.
Se crean usando ().
Sus elementos pueden ser heterog´eneos.
Se accede a sus elementos igual que una lista.
Jes´us Espino Garc´ıa (GUL UC3M)
Programaci´on en Python
18 de Noviembre de 2004
18 / 1
Ejemplos con tuplas
>>> tupla1=(1,2,3)
>>> tupla1
(1, 2, 3)
>>> tupla2=(tupla1,["gul","linux"])
>>> tupla2
((1, 2, 3), [’gul’, ’linux’])
>>> tupla1[2]
3
>>> tupla2[1]
[’gul’, ’linux’]
Jes´us Espino Garc´ıa (GUL UC3M)
Programaci´on en Python
18 de Noviembre de 2004
19 / 1
Diccionarios
Como las tablas hash en Java.
Se identifican con {}.
Sus elementos est´an asociados a una clave.
Para acceder a un elemento:
diccionario[clave]
Las claves deben ser ´unicas.
Los elementos complejos no pueden ser claves.
Jes´us Espino Garc´ıa (GUL UC3M)
Programaci´on en Python
18 de Noviembre de 2004
20 / 1
Diccionarios
Algunos m´etodos:
has_key(clave): Devuelve 1 si existe la clave.
items(): Devuelve una lista con el contenido.
iteritems(): Itera sobre la tupla (clave:elemento)
iterkeys(): Itera sobre las claves.
keys(): Devuelve una lista con las claves.
M´as informaci´on help(dict).
Jes´us Espino Garc´ıa (GUL UC3M)
Programaci´on en Python
18 de Noviembre de 2004
21 / 1
Buceando dentro de Python
Lenguaje introspectivo.
dir() muestra los objetos que hay en la memoria.
Los m´etodos tambi´en son objetos.
>>> dir()
[’__builtins__’, ’__doc__’, ’__name__’, ’a’, ’b’, ’c’, ’d’, ’e’]
Jes´us Espino Garc´ıa (GUL UC3M)
Programaci´on en Python
18 de Noviembre de 2004
22 / 1
Buceando dentro de Python
Es muy ´util cuando tienes mala memoria.
>>> dir([])
[’__add__’, ’__class__’, ’__contains__’, ’__delattr__’, ’__delitem__’,’
__delslice__’, ’__doc__’, ’__eq__’, ’__ge__’, ’__getattribute__’, ’__ge
titem__’, ’__getslice__’, ’__gt__’, ’__hash__’, ’__iadd__’, ’__imul__’,
’__init__’, ’__iter__’, ’__le__’, ’__len__’, ’__lt__’, ’__mul__’, ’__ne
__’, ’__new__’, ’__reduce__’, ’__reduce_ex__’, ’__repr__’, ’__rmul__’,
’__setattr__’, ’__setitem__’, ’__setslice__’, ’__str__’, ’append’, ’cou
nt’, ’extend’, ’index’, ’insert’, ’pop’, ’remove’, ’reverse’, ’sort’]
Jes´us Espino Garc´ıa (GUL UC3M)
Programaci´on en Python
18 de Noviembre de 2004
23 / 1
Un poquito de ayuda
>>> help([].append)
Help on built-in function append:
append(...)
L.append(object) -- append object to end
Jes´us Espino Garc´ıa (GUL UC3M)
Programaci´on en Python
18 de Noviembre de 2004
24 / 1
Indentado
El lenguaje es sensible al indentado.
Despu´es de : hay un bloque.
Jes´us Espino Garc´ıa (GUL UC3M)
Programaci´on en Python
18 de Noviembre de 2004
25 / 1
Bloque 1Bloque 1Bloque 2 Condiciones
if condicion1:
bloque si se cumple la condici´on
elif condicion2:
bloque si no se cumple la condici´on 1 y si la 2
else:
bloque si no se cumple ninguna condici´on anterior.
Jes´us Espino Garc´ıa (GUL UC3M)
Programaci´on en Python
18 de Noviembre de 2004
26 / 1
Bucles
while condicion:
Lo que se hace en el bucle
break sale del bucle.
continue pasa a la siguiente iteraci´on.
Jes´us Espino Garc´ıa (GUL UC3M)
Programaci´on en Python
18 de Noviembre de 2004
27 / 1
Iteraciones
for variable in lista:
Lo que est´a dentro de la iteraci´on
Se basa en las listas.
Funci´on range().
Jes´us Espino Garc´ıa (GUL UC3M)
Programaci´on en Python
18 de Noviembre de 2004
28 / 1
Rangos
range(x) devuelve una lista con un intervalo
>>> range(10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> range(5,7)
[5, 6]
Jes´us Espino Garc´ıa (GUL UC3M)
Programaci´on en Python
18 de Noviembre de 2004
29 / 1
Definici´on de funciones
def funcion(argumento1,argumento2...):
’Documentaci´on de la funci´on’
Contenido de la funci´on
[Opci´on: return salida]
Jes´us Espino Garc´ıa (GUL UC3M)
Programaci´on en Python
18 de Noviembre de 2004
30 / 1
Par´ametros de las funciones
Puede tener cero, uno o varios.
Puedo llamarla con menos par´ametros.
Puedo indicar los par´ametros con los que llamo.
Puedo poner valores por defecto.
Jes´us Espino Garc´ıa (GUL UC3M)
Programaci´on en Python
18 de Noviembre de 2004
31 / 1
Veamos un ejemplo
def diHolaMundo(mensaje="Hola Mundo!",numVeces=1):
’Mi funci´on hola mundo pesado de ejemplo.’
for i in range(numVeces):
print mensaje
Jes´us Espino Garc´ıa (GUL UC3M)
Programaci´on en Python
18 de Noviembre de 2004
32 / 1
Usando mi funci´on de ejemplo
>>> diHolaMundo()
Hola Mundo!
>>> diHolaMundo("Hola a todos")
Hola a todos
>>> diHolaMundo("Hola a todos",3)
Hola a todos
Hola a todos
Hola a todos
>>> diHolaMundo(3)
3
>>> diHolaMundo(numVeces=3)
Hola Mundo!
Hola Mundo!
Hola Mundo!
Jes´us Espino Garc´ıa (GUL UC3M)
Programaci´on en Python
18 de Noviembre de 2004
33 / 1
Creando nuestra propia ayuda
>>> help(diHolaMundo)
Help on function diHolaMundo in module __main__:
diHolaMundo(mensaje=’Hola Mundo!’, numVeces=1)
Mi funci´on hola mundo pesado de ejemplo.
>>> diHolaMundo.__doc__
’Mi funci´on hola mundo pesado de ejemplo.’
Jes´us Espino Garc´ıa (GUL UC3M)
Programaci´on en Python
18 de Noviembre de 2004
34 / 1
Escribiendo programas
En archivos .py.
Primera linea de un script de Unix.
#!/usr/bin/python
Ficheros .pyc son bibliotecas precompiladas.
Podemos llamarlo desde la linea de comandos.
python programa.py
./programa.py
Jes´us Espino Garc´ıa (GUL UC3M)
Programaci´on en Python
18 de Noviembre de 2004
35 / 1
Entrada por teclado
input("cadena"): Muestra la cadena y obtiene un entero.
>>> x=input("Obtener valor: ")
Obtener valor: 5
>>> x
5
raw_input("cadena"): Muestra la cadena y obtiene una cadena.
>>> y=raw_input("Obtener valor: ")
Obtener valor: 5
>>> y
’5’
Jes´us Espino Garc´ıa (GUL UC3M)
Programaci´on en Python
18 de Noviembre de 2004
36 / 1
Par´ametros de entrada
sys.argv es una lista con los par´ametros.
Utilizaci´on:
import sys
nombre = sys.argv[0]
primer_parametro = sys.argv[1]
...
Jes´us Espino Garc´ıa (GUL UC3M)
Programaci´on en Python
18 de Noviembre de 2004
37 / 1
Consejos para los programas
Es bueno dividir el c´odigo en funciones.
Podemos incluir c´odigo de prueba en un archivo.
Se ejecuta muy f´acil con:
if __name__==’__main__’:
testme()
Jes´us Espino Garc´ıa (GUL UC3M)
Programaci´on en Python
18 de Noviembre
Comentarios de: Programación en Python (0)
No hay comentarios