9. Por que Python?
• Usado por grandes compañías.
• Fácil de aprender y mantener.
• Excelente para principiantes y
expertos.
• Libre y Open Source.
• Una gran cantidad de librerías.
• Una gran comunidad.
• Integrado con ArcGIS.
10. IDE
• Un buen IDE debe de
tener como mínimo:
• Un editor con
autocompletado de
código.
• Plantillas de código.
• Resaltar la sintaxis.
• Explorador de código
para funciones y clases.
• Herramientas para
debugging y test
unitarios.
14. Variables
• Python usa asignación
dinámica de las
variables.
• Valor definido por el
tipo.
• No puede comenzar con
dígitos ni se debe usar
palabras claves.
• La varible null en python
es none.
15. Tipos de Datos - Números
• Integer (Enteros)
– Int
– Long (23L)
• Float (decimales)
– Float (0,3)
– Double
• import math para
operaciones
matemáticas NOTA: Si se quiere una operación con decimales, al menos uno de los 2
elementos debe de tener un número decimal o poner un número entre la
función float()
16. Tipos de Datos - String
"Es una colección
ordenada de caracteres"
• En python comillas simples o dobles son lo mismo.
• caracteres especiales (n, t).
• Puede ser precedidas por U(Unicode) y r(Raw).
• Operación + para concatenar
• Función str() para convertir a string un elemento.
Substring corchetes: fruit[1:3] "an"
17. Tipo de Datos - Booleano
• True o False
• Usado en expresiones
condicionales y bucles.
Operador Descripción Ejemplo
and ¿se cumple a y b? r = True and False # r es False
or ¿se cumple a o b? r = True or False # r es True
not No a r = not True # r es False
Operador Descripción Ejemplo
== ¿son iguales a y b? r = 5 == 3 # r es False
!= ¿son distintos a y b? r = 5 != 3 # r es True
< ¿es a menor que b? r = 5 < 3 # r es False
> ¿es a mayor que b? r = 5 > 3 # r es True
<= ¿es a menor o igual que b? r = 5 <= 5 # r es True
>= ¿es a mayor o igual que b? r = 5 >= 3 # r es True
Operadores Lógicos
Elementos de comparación
18. Tipos de Datos - Listas
• La lista es un tipo de colección ordenada.
• La lista esta rodeada por corchetes [], y están separados
por comas (,).
– miLista = [1, 2, 4, 8, 16, 32]
• Entre los métodos para manipula la lista estan:
– sort() , ordena los elementos
– append() , agrega el elemento que esta dentro del
paréntesis.
– extend(), concatenar lista, ej. miLista ([10,20, 32])
• Para acceder a una lista se puede poner el índice de la
ubicación del elemento (miLista[1] = 2) o recorrer la lista
mediante un for (for l in miLista)
[L2.append(x) for x in miLista if x not in L2]
19. Tipos de Datos - Tuplas
Tuplas
• Contiene una secuencia de
valores que se definen con ().
• No posee mecanismos de
modificación.
• Inmutables.
• Menor consumo de memoria.
• Se accede mediante corchete
[] y poniendo la posición del
elemento.
Diccionarios
• Colecciones con clave y valor.
Se define con llaves {}.
d = {"Love Actually": "Richard
Curtis", "Kill Bill":
"Tarantino"}
• Se implementan con
diccionarios Hash.
• Solo se accede mediante la
clave del elementos.
• Mutable
• Para iterar por los elementos
se puede utilizar
for k, v in d.iteritems()
20. Funciones
• len() : se obtiene la
cantidad de elementos en
listas, tuplas o colecciones.
Diccionario
• d.has_key(k): comprobas si
existe la clave k en la lista d.
• d.items(): Se obtiene una
lista de tuplas con clave-
valor
• d.keys(): Devuelve una lista
de claves de d.
• d.values(): devuelve una
lista de valores de d.
Lista
• l.append(o): agrega el
elemento o en la lista.
• l.count(v): devuelve el
numero de veces que se
repite v.
• l.index(v): devuelve la
índice del valor a buscar.
21. Condiciones
• Sentencia if / elif / else
• Controla si la condición
es cierta.
• elif se utiliza cuando se
tiene condiciones
múltiples.
if x == 1:
print ‘x es 1’
elif x == 2:
print ‘x es 2’
else:
print ‘x es
desconocido’
var = "par" if (num % 2 == 0)
else "impar"
22. Lazos
• La lazo while repite una acción
hasta que la condición sea
verdadera.
• Un lazo for repite un bloque
de código para cada elemento
de una secuencia.
• Se puede utilizar para un
conjunto de números la
función range(3), comienza
de 0 y termina en 3.
• La palabra clave break rompe
los lazos y continue continua
con la siguiente iteración.
i = 0
while i <= 10:
print i
i += 1
dictLayers = {"Camino":"Linea",
"Parque":"Poligono"}
lstLayers = dictLayers.keys()
for x in lstLayers:
print dictLayers[x]
for x in range(3):
print x
23. Lectura de Línea / Archivo
Leer por consola
• Para poder leer
alguna sentencia
ingresada por el
usuario del
programa podemos
usar la siguiente
sentencia:
dato = print
raw_input("¿Cual
es tu nombre?")
Archivo
• Para leer archivos se necesita
importar el modulo os así
como utilizar los siguientes
comandos:
– f = open("text","r"),leer
archivo , existen 3 modos de
lectura r (leer) w (escribir) y a
(agregar)
– linea = f.readlines(), lee
todas las líneas del archivo, se
itera con for.
– f.write(texto) escribe texto en
el archivo
– f.close() cierra el archivo.
24. Manejo de Errores
• Cuando un error ocurre
python dispara una
excepción.
• Con la palabra raise
puedes invocar una
excepción.
• Se controlan mediante
try – except – (finally).
• Para saber en que linea
esta el error utilizamos la
siguiente sentencia
import sys
#Dentro de la excepcion
tb = sys.exc_info()[2]
print tb.tb_lineno
try:
if arcpy.CheckExtension("3D") ==
"Disponible":
arcpy.CheckOutExtension("3D")
else:
#Envía una excepción
personalizada.
raise ErrorLicencia
# Hacer algo con la licencia
print "Disponible"
except ErrorLicencia:
print "Licencia no disponible"
except Exception as e:
print e.message
finally:
#Check in the 3D Analyst extension
arcpy.CheckInExtension("3D")
25. Programación Funcional
• Programación se basa
en funciones, esto
según su definición
matemática, no es una
simple rutina.
• Funciones de orden
superior, pasar
funciones como
parámetro y retorno.
• Interación de orden
superior sobre listas
def ejecutar(tipo):
def linea_comando():
print "Por Linea Comando"
def pantalla():
print "Por Pantalla"
def servicio_web():
print "Por Web Service"
lang_func = {"lc":
linea_comando,"pt": pantalla,
"WS": servicio_web}
ejecutar[tipo]
f = ejecutar("pt")
f()
26. Programación Funcional - Lambda
• Permite crear funciones
anónimas, las cuales no
podrán ser referenciadas
más tarde.
• Las funciones lambda se
construyen mediante el
operador lambda, los
parámetros de la función
separados por comas,
SIN paréntesis, dos
puntos (:) y el código de
la función.
l = [1, 2, 3]
l2 = filter(lambda n: n %
2.0 == 0, l)
Map: La función map aplica una
función a cada elemento de una
secuencia
l2 = [n ** 2 for n in l]
Filter: Verifica que los elementos de
la secuencia cumplan una
condición, devuelve los true.
l2 = [n for n in l if n % 2.0 ==
0]
Compresión de lista
l = [0, 1, 2, 3]
m = ["a", "b"]
n = [s * v for s in m
for v in l
if v > 0]
27. Expresiones Regulares
Secuencias especiales
A Inicio del texto.
b limites de una palabra entre w y W
d número
D no numérico
s espacios en blanco [ tnrfv]
S no espacios en blancos.
w Alfanuméricos.
W No alfanuméricos.
Z fin del texto
Caracteres especiales
escape de caracteres especiales.
. Busca cualquier carácter menos n.
^ Busca al inicio del texto.
$ Busca al final del texto.
[5b-d] encuentre cualquier carácter que
este en el rango'5', 'b', 'c' or 'd‘
R|S encuentre R o S
[^a-c] no busca a ni b ni c.
Cantidades
* 0 o más (agregar ? para que no sea
codicioso)
+ 1 o más
? 0 o 1
{m} exactamente m veces.
(…) grupo
28. Expresiones Regulares
• Es una secuencia de caracteres que forma un patrón de
búsqueda, Wikipedia.
• Se utiliza el modulo re.
• Ejemplo de expresión : match = re.search(pat, str)
• buscar patrones, dividir grupos y reemplazo de caracteres.
#Buscar una palabra que comience con p, j o c continúe con ython y
termine con una secuencia de 0 a 9
re.match(“[pjc]ython[0-9]”, “python2”) #Encontrado
#Buscar una palabra que comience con http y encuentre un punto, crear
un nuevo grupo con una palabra que sea de 3 digitos
mo = re.match(“http://(.+)(.{3})”, “http://eluniverso.com”)
print mo.groups()
(‘eluniverso.com’, ‘com’) #Resultado
match = re.search(r'w+@w+', str)