space, → | next slide |
← | previous slide |
d | debug mode |
## <ret> | go to slide # |
c | table of contents (vi) |
f | toggle footer |
r | reload slides |
z | toggle help (this) |
python
python
seguido del nombre de archivo1
(int), 666L
(long), 3.14
(float), 1 + 2j
(complex)True
, False
(cualquier cosa excepto 0, None y las secuencias vacías es implícitamente verdadera)'sencillos'
, "dobles"
, """triples"""
, '''mas triples'''
None
[1,2,'a', True, False, [3,4,5]]
(listas), (1, 2, 3, 'x', (None))
(tuplas){'a', 1, 'b': 2, 'c':"eso"}
(diccionarios), set([1,2,3])
(conjuntos)**
(exponenciación) y //
(división entera)<
, >
, <=
, >=
, !=
, ==
not
, and
, or
import x
o from x import y,z,w
o from x import *
o from x import algo as y
#
:
) e indentaciónif...else
if...elif..else
while
for ... in
try... except...else
from datetime import datetime as dt
ahora = dt.now
dia = ahora().day
meses = {1 : "Enero", 2: "Febrero", 3: "Marzo"}
if dia < 20:
while ahora().second % 5 :
print "%d no es múltiplo de 5" % ahora().second
elif dia == 20:
for i in range(1, ahora().month+1):
print "Pasó el %d mes: %s " % (i, meses[i])
else:
print "Algo así", "es python", "esto es una tupla..."
lista[inicio:fin_inclusivo:salto]
l[indice], l[-indice]
[0]*5 == [0,0,0,0,0]; [1]+[2,3] == [1,2,3]; 5 in [1,2,3] == False
another_list = [exp for elem in list]
; a = [exp for elem in list if cond]
for k,v in d.items()
k in d
import calendar
#Obtengamos los nombres de los dias:
dias = [calendar.day_name[i] for i in range(7)]
#Si estan en ingles, traduzcamoslos
if 'Monday' in dias:
trad = dict(zip(dias, """Lunes Martes Miercoles
Jueves Viernes Sabado
Domingo""".split()))
else:
trad = dict([(e,e) for e in dias]) #Lo mismo que zip...
#Veamos que hay adentro:
for dia, trans in trad.items():
print "%s se dice %s" % (dia, trans)
print "El fin de semana", dias[4:7], dias[-3:]
dias[5:7] = ["Dormir", "Ver Tele"]
print "El verdadero fin de semana", dias[4:7]
print "Yo trabajo estos dias", dias[:4]
print "Los dias habiles impares", dias[0:5:2]
print "La semana al reves", dias[::-1]
def fib(n):
a,b = 0,1
nums = []
while a < n:
nums += [a,]
a, b = b, a+b
return nums
print fib(2000)
def
para crear una funciónNone
def bubblesort(x, ascending=True, make_copy=False):
x = x[:] if make_copy else x
for i in range(len(x)):
for j in range(len(x)-1, i, -1):
if ascending:
if x[j-1] > x[j]:
x[j-1], x[j] = x[j], x[j-1]
else:
if x[j-1] < x[j]:
x[j-1], x[j] = x[j], x[j-1]
return x
import random
list= range(10)
random.shuffle(list)
print bubblesort(list) #la ordena ascendente y cambia
random.shuffle(list)
print bubblesort(list, False) #la ordena descendente y cambia
print bubblesort(list, make_copy=True) #ascendente, no la cambia
print bubblesort(make_copy=False, ascending=False, x=list)
def sum_nums(*nums):
acc = 0
for num in nums:
acc += num
return acc
print sum_nums(1,2,3,4) #=> 10
l = range(11)
print sum_nums(*l) #=> 55
def print_hist(**table):
for k, v in table.items():
print "%s: %s" % (k, '#'*v)
print_hist(e=3, a=2)
t = {'x': 10, 'y': 3}
print_hist(**t)
def varargs(saludo, *args, **kwargs):
print saludo
if 'do_print' in kwargs and kwargs['do_print']:
for arg in args:
print arg
varargs("hola")
varargs("hola", 1,2,3)
varargs("mundo", 3,4,5, do_print=True)
varargs("mundo", 3,4,5, do_print=False)
*
**
def evil_fun(x, l=[]):
l.append(x)
return l
evil_fun(3)
evil_fun()
evil_fun(4)
evil_fun(5, [6])
def menor_que(a,b):
return a < b
def mayor_igual(a,b):
return a >= b
def quicksort(l, lt=menor_que, geq=mayor_igual):
if l == []: return []
else:
s, xs = l[0], l[1:]
return quicksort([e for e in xs if lt(e, s)], lt,geq)\
+ [s]\
+ quicksort([e for e in xs if geq(e, s)],lt,geq)
import random
list = range(10)
random.shuffle(list)
print quicksort(list)
print list
print quicksort(list, mayor_igual, menor_que)
rand = random.randint
#ordenar una lista de listas
llist = [range(rand(1,5)) for e in range(1,5)]
print quicksort(llist,
lt=lambda a,b: len(a) < len(b),
geq= lambda a,b: len(a) >= len(b))
lambda
crea funciones anónimasdef combine(f,g,h):
def do_combination(x):
return f(g(h(x)))
return do_combination
ua = combine(str.split,
str.title,
lambda s: s.replace('_',' '))
print upper_alpha("a_veces_no_hay_espacio")
def combine(f,g,h):
return lambda x: f(g(h(x)))
ua= combine(str.split,
str.title,
lambda s: s.replace('_',' '))
print upper_alpha("a_veces_no_hay_espacio")
def partial(f, *partials):
def application(*a, **kw):
return f(*(partials + args), **kw)
return application
def sumas(x,y,z):
return x+y+z
print sumas(1,2,3)
siempre_uno = partial(sumas, 1)
print siempre_uno(2,3)
siempre_uno_y_dos = partial(sumas, 1, 2)
print siempre_uno_y_dos(3)
import json
def json_fun(f):
def wrapper(json_string, *args, **kwargs):
python_object = json.loads(json_string)
result = f(python_object, *args, **kwargs)
return json.dumps(result)
return wrapper
def foo(arg):
assert isinstance(arg, dict)
arg.update({'bar': 42})
return arg
foo = json_fun(foo)
@json_fun
def foo(arg):
assert isinstance(arg, dict)
arg.update({'bar': 42})
return arg
import json, pickle
def serialize(format="json"):
def decorator(f):
def wrapper(*args, **kwargs):
result = f(*args, **kwargs)
if format == 'json':
return json.dumps(result)
elif format == 'pickle':
return pickle.dumps(result)
else:
throw Exception("Invalid format")
return wrapper
return decorator
@serialize()
def fun(): return {'foo': 'bar'}
class Punto(object):
def __init__(self, x=0, y=0):
self.x = x
self.y = y
def __str__(self):
return "(%d, %d)" % (self.x, self.y)
def dist(self, other):
import math
return math.sqrt((other.x-self.x)**2 + \
(other.y-self.y)**2)
def __add__(self, o):
return Punto(self.x+o.x, self.y+o.y)
a = Punto(2,3)
b = Punto()
c = Punto(y=1)
print b.dist(a)
print c
print a + b
__init__
)self
es como this
: un parámetro agregado por el entorno de ejecución
def search(str, filename):
#el segundo parametro es el modo,
#r para leer, w para escribir, b para binario
#a es para agregar
file = open(filename, 'r')
count = 1
for line in file.readlines():
if str.lower() in line.lower():
print "%d: %s" %(count, line)
count += 1
file.close()
import sys
if len(sys.argv) == 3:
search(sys.argv[1], sys.argv[2])