Python 101
Ángel Velásquez @angvp

http://angvp.com
Historia rápida (< 1 min)
- Lanzado en 1991 por Guido Van Rossum
- El nombre es cortesía de la serie inglesa "Monty Python's flying circus"
- Licencia PSFL (compatible con licencia)
- Influenciado por: (ABC, ALGOL, C, Haskell, Icon, Java, Lisp, Modula-3, Perl, Smalltalk)
- Influenció a: Boo, Cobra, Cython, D, Falcon, Genie, Go, Groovy, Javascript, Ruby
https://es.wikipedia.org/wiki/Python
Algunas consideraciones
- Todo es un objeto (*)
- Es débilmente tipado
- Las líneas no terminan en ';'
- No usa { } para separar bloques, sino identación y : (para abrir los bloques)
- Los operadores aritméticos son: suma (+), resta (-), multiplicación (*), división (/), módulo (%), potencia (**)
- Los operadores de comparación: ==, !=, >
- También existen operadores como: is, not, is not, and, or, etc.
https://es.wikipedia.org/wiki/Python
Tipos de datos básicos
- Boolean: se escriben con True o False
- Enteros: numero o int() para forzar conversión
- Cadenas: '' o """múltiples lineas""""
- Float: punto flotante
>>> a = 'esta es una cadena'
>>> b = 1
>>> c = False
>>> d = 10.5Estructura de datos básicas: Tuplas
- Son inmutables (no se pueden agregar, cambiar o extraer valores)
- La notación usada cuando se definen son los paréntesis
- Algunas de las funciones usadas en tuplas son index y count
>>> tupla = ('hola', 'mundo', 'hola', 'como', 'estas')
>>> # hacer esto lo rompe
>>> tupla.append('rompe')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'tuple' object has no attribute 'append'
>>> tupla[0]
'hola'
>>> tupla.count('hola')
2
>>> tupla.index('como')
3
>>> len(tupla) # con esto se la cantidad de elementos
5Estructura de datos básicas: Listas
- Soportan distintos tipos de datos
- La notación usadas son los corchetes
- También tiene las funciones index, y count, pero además tiene: pop, append, extend, reverse, sort, remove, insert
>>> lista = ['hola', 1]
# agregamos otro item
lista.append(True)
# resultado de esto
>>> lista
['hola', 1, True]
>>> lista[2]
True
>>> x = lista.pop()
>>> x
True
>>> lista.sort()
>>> lista
[1, 'hola']
>>> lista.reverse()
>>> lista
['hola', 1]Estructura de datos básicas: Listas
Python maneja la memoria de una forma que puede ser muy óptima (usa referencias a otros objetos parecidos, etc), pero puede dar dolores de cabeza, por ejemplo:
>>> lista = ['hola', 1]
>>> listab = lista
>>> lista.append('nueva')
>>> listab # y creimos que solo tendría hola y 1? PUES NO!
['hola', 1, 'nueva']

Powertip: Copy
>>> lista = ['hola', 1]
>>> listab = lista
>>> lista.append('nueva')
>>> listab # y creimos que solo tendría hola y 1? PUES NO!
>>>
>>>
>>> from copy import copy # copy al rescate!
>>> lista_clone = copy(lista)
>>> lista.append('este no esta')
>>> lista_clone
['hola', 1, 'nueva']
Diccionarios
- Estructura 'clave': valor
- La notación general es con llaves { }
- Algunos métodos incluídos en los diccionarios: keys, iteritems, values, copy
>>> a = {'clave1': 'valor', 'clave2': 'valor2'}
>>> a.keys()
['clave1', 'clave2']
>>> a.values()
['valor', 'valor2']Ciclos
for y while
for i in range(0, 5):
print i
j = 0
## Ahora con while
while j < 5:
j += 1
print jValidaciones
Se usa if, else, elif
a = 'hola'
if a == 'mundo':
print 'aca no entra'
elif a == 'sarasa':
print 'aca tampoco'
else:
print 'entro derecho'Funciones
def funcion_ejemplo():
return True
def funcion_mas_compleja(parametro):
return "El parametro es {}".format(parametro)
def mas_parametros(uno, dos):
for i in range(uno, dos):
print i
print funcion_ejemplo()
print funcion_mas_compleja('python la rompe')
mas_parametros(10, 5)Funciones con argumentos
#!/usr/bin/python
def flanders(param, *args):
print param
print args[1]
def flanders_dict(**kwargs):
print kwargs['hola']
lista = ['mundo', 'mundirijillo']
diccionario = {'hola': 'mundirijillo'}
flanders("hola", *lista)
flanders_dict(**diccionario)Clases
class MiClase(object):
def __init__(self):
self.result = 0
print "Hola soy un constructor"
def suma(self, a, b):
self.result = a + b
x = MiClase()
y = MiClase()
x.suma(1, 5)
y.suma(1, 1)
print "La suma de X de dio el resultado de: {}".format(x.result)
print "La suma de X de dio el resultado de: {}".format(y.result)Ejercicios
- Imprimir los años bisiestos del 2000 al 2100
- Escribir una función que detecte si 2 palabras son anagramas
Python 101
By Angel Velásquez
Python 101
Charla para explicar python a unos amigos
- 504