Paper III Python
Paper III Python
Bueno gente, nos volvemos a leer, como ya es tradición en underc0de, estos talleres que
vienen con la mejor onda, cualquier duda y/o crítica me escriben por MP en el foro, a
[email protected], y en Twitter pueden encontrarme como @Gh0st_C.
Bueno primero les dejo algunos consejos para mejorar su ánimo a la hora de programar,
después viene el contenido teórico, intento meterle la buena onda para que no sea aburrido.
Espero lo logre.
Bien esto es algo muy personal, quiero decir, cada uno está cómodo de diferentes formas, pero acá
les dejo algunos consejos que por ahí les serán útiles.
# La comodidad de su asiento.
Fundamentalmente para que no tengan dolores.
# 0% Distracción
Este es un punto importante que lo estoy empezando a poner en práctica. Cerrar las redes sociales,
Ausentarse en el msn, etc.
Remarco este consejo porque cuando estamos programando lo que menos necesitamos es pensar en
otra cosa (como si estas estudiando), o sea, no podemos programar y Twittear boludeces.
En la distracción también esta el tema del lugar de trabajo (o hobbie), es preferible que su PC este
en una parte donde circule poca gente (Ej = El cuarto), en mi caso, no corro con esa suerte.
# Buenas referencias
Con esto quiero decir tener buenos manuales de referencia, para no andar con dudas ni jodiendo a
otros programadores con dudas pedorras.
En lo personal me gusta mucho "Python in a Nutshell", lo único está en ingles.
Lo pueden descargar desde Aquí…
http://downloads.ziddu.com/downloadfile/4463903/pythonnutshell.rar.html
Revisión Del Paper Nº2
Antes de arrancar con nuevos conceptos voy a dejarles algunas aclaraciones que no hice en el paper
anterior.
# type(), que retorna el tipo de dato de un objeto (int, list, str, etc.)
# Ejemplo
>>>type(['Hola', 'aguja'])
<type 'list'> #Retorno
>>> type(4)
<type 'int'>
>>> type(('Horoscopo','Horangel','Puras Giladas'))
<type 'tuple'>
# Ejemplo
Edad = 48
EdadStr = str(Edad)
print EdadStr
# Ejemplo
>>>int('52')
52
>>>int('Twitter')
ValueError: invalid literal for int() with base 10: 'Twitter' #Acá esta el error
>>>int(45.23)
45
>>>int('45.23')
ValueError: invalid literal for int() with base 10: '45.23' #Da error porque para esto
#esta la función float()
# float() , que convierte números enteros y cadenas en números decimales
# Ejemplo
>>>float(52)
52.0
>>> float('52.56')
52.56
# Entrada de datos
Ya he mencionado el raw_input, pero no hable del input.
La diferencia está en que raw_input almacena los datos a modo de string, e input, aunque guarda todo
tipo de datos, hay que especificar que tipo de dato es.
# Ejemplo
# Ejemplo
Esto no da error porque es un número y esta especificado, pero sí metemos otro tipo de dato, como
string, ¿Que pasará?
Acá vemos el error, Gh0st es un string, no un número, para solucionarlo hay que indicarle a Python
que dato es.
# Variables 'Especiales'
Realmente les puse ese nombre porque se usan en pocos y especiales casos.
Variable Long (enteros): Mientras que en el tipo int, la variable puede almacenar números
31 31
desde -2 a 2 . Las variables tipo long guardan cualquier cantidad de cifras, solo lo limita la
cantidad de memoria que tenga la maquina.
Cuando asignamos un número a una variable (Ej: Varint = 4) esta se vuelve tipo int automáticamente, a
menos de que el número sea demasiado grande, entonces se convierte en long. Pero si queremos que
se almacena como long, siendo tan chico, hay que hacerlo de esta forma: Varint = 4L (esto no es
aconsejable, a menos que sea necesario, porque te come la memoria). También podemos expresar
estos valor en forma hexadecimal o como octal.
Variable Double (reales): Aunque existe la variable float(), cuando necesitamos más precisión
utilizamos double() (o sea, doble exactitud), con este tipo de variables podemos representar números
desde ±2,2250738585072020 x 10-308 hasta ±1,7976931348623157×10308.
También están las variables tipo decimal (que se usan en programación científica) y las de tipo
complex (es la variable de los números complejos, se almacena usando coma flotante y en una
estructura de C , y esta compuesta por dos variables del tipo double())
# Función range()
Como sucede con funciones como str(), type(), etc. ya vienen importadas cuando ejecutamos Python
y no hay que importarlas (import blabla) en este grupo también esta la función range(), que devuelve
una lista de números enteros, puede tener uno, dos o tres parámetros, estos van entre paréntesis.
# Ejemplo
Ranum = range(15,50)
print Ranum
Esto imprimira desde el número 15 hasta el numero 49 (se muestra hasta el número anterior a el
segundo parámetro)
Ranum = range(15,)
Sí no incluimos segundo argumento es como si ponemos Ranum = range(15), o sea que retorna una
lista de números desde el 0 hasta el catorce.
Con tres parámetros la cosa es diferente, los dos primeros indican el rango, y el 3 el salto entre
número y número, si el 3 número es negativo la lista es decreciente, si es positivo, creciente, pero el
primer parámetro tiene que ser más grande que el segundo para que la lista no este vacía.
Para que quede más claro, Ejemplo
# Ejemplo Creciente
Ranum = range(15,50,2)
print Ranum
[15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49]
# Ejemplo Decreciente
Ranum = range(50,15,-2)
print Ranum
Esto da:
[50, 48, 46, 44, 42, 40, 38, 36, 34, 32, 30, 28, 26, 24, 22, 20, 18, 16]
#Lista vacía
Ranum = range(14,50,-2)
print Ranum
Esto da :
[] #Lista vacía :S
# For
El Bucle For lo que hace es repetir un número predeterminado de veces una o varias instrucciones.
El bloque de instrucciones se llama cuerpo del bucle, y cada repetición, iteración.
# Ejemplo
For i in range(3):
print ‘Numero’
print i
Esto imprime…
Numero
0
Numero
1
Numero
2
# Acumuladores
En muchos programas van a necesitar variables que acumulen valores, eso, lo aprenderemos ahora.
# Ejemplo
Operacion = 0
for op in range(15):
suma = suma + i
print 'la suma de los numeros es ', suma
# Contadores
También vas a precisar de variables que cuenten cuantas veces a ocurrido algo.
# Ejemplo
Masmasmas = 0
for b in range(150):
if i%5 == 0:
cuenta = cuenta + 1
print ‘Entre 0 y 150 hay’, cuenta, ‘múltiplos de 5’
Colecciones
# Listas
Las listas son colecciones ordenadas, no necesariamente del mismo tipo, que pueden ser modificadas
en el transcurso del script.
Hay muchas formas de crear una lista, pero la más fácil es indicar entre corchetes los elementos y
luego separarlos por comas
# Ejemplo
# Ejemplo
Ahora si ponemos
print Talleres[5] #Dará un error, obviamente, es porque estamos pidiendo que imprima un rango de
#Talleres que no ha sido definido
Ok es simple, para acceder solo hay que declarar en que lugar se encuentra la lista exterior y luego el
dato de la lista interior.
Un índice negativo permite acceder a las listas del ultimo valor hacía el primero.
# Ejemplo
# Ejemplo
Numerosalfin = [99, 35, 67, 85, 789, 456, 132, 369]
if 99 in Numerosalfin:
print '99 se encuentra dentro de Numerosalfin'
else:
print '99 No esta en Numerosalfin'
Aquí la variable Integrantes toma el valor de un elemento de Zeppelin en cada pasada (ciclo) del for,
o sea que se repetirá tantas veces como elementos tenga la lista y la variable irá tomando los valores
de uno en uno
Para agregar elementos a una lista ya existente nos valdremos de 3 métodos, append, insert, y
extend. Veamos.
# Ejemplo append
Esto nos da ['Jujuy', 'Santa Cruz', 'San Juan', 'Tierra del Fuego'], entonces, append sirve para
agregar un elemento al final de la lista. Para hacer uso de este hay que poner el nombre de la lista,
seguido de un punto, append, y luego entre corchetes y con comillas el nombre del nuevo elemento. Si
agregan más de un valor, se creará una lista dentro de otra.
# Ejemplo
El resultado
['Jujuy', 'Santa Cruz', 'San Juan', ['Tierra del Fuego', 'Cordoba', 'Buenos Aires']]
# Ejemplo insert
Retorna :
# Ejemplo extend
# Ejemplo Suma
# O así
# Multiplicación
# O también
Retorna:
Esto si es bastante interesante, y no es complicado, para buscar usamos el método index seguido de
unos paréntesis y entre comillas el valor a buscar. El índex es más amplio, pero me pareció que hasta
acá está bien, si quieren saber más, googlen :D
# Ejemplo
# Ejemplo (del)
del Bebidas[0:2]
del Bebidas
Más que simple, pop() elimina el ultimo elemento de la lista y devuelve el valor que elimino.
# Ejemplo
# Slicing
# Ejemplo
Superheroes = ['Superman', 'Spiderman', 'Tino', 'Capitan America', 'Capitan Crunch', 'Iron Man']
Slice = Superheroes[1:5]
print Slice #Esto devolvería desde 'Spiderman' hasta 'Capitan Crunch'
Ahora, esto pasará si incluimos solo dos posiciones (1:5), pero que pasa con 3?
# Ejemplo
Superheroes = ['Superman', 'Spiderman', 'Tino', 'Capitan America', 'Capitan Crunch', 'Iron Man']
Slice = Superheroes[0:5:2]
print Slice # Devuelve 'Superman', 'Tino', 'Capitan Crunch'
Esto sucede porque ahora, cuando incluimos el tercer valor (2), Python lo interpreta como
[Inicio:Fin:Salto], en castellano sería, arranca en la posición 0 ('Superman') y va hasta la 5 ('Iron
Man') saltando de 2 en 2.
Estas son algunas de las cosas que se pueden hacer con las listas, las más básicas e importantes.
# Tuplas
Una tupla es también una colección ordenada de datos no necesariamente del mismo tipo, no puede
cambiar de ninguna manera una vez creada, se accede a ellos (los datos) por medio de subíndices. En
resumen una tupla es una lista que no puede cambiar sus valores.
Para definirla se encierran los valores entre paréntesis (no entre corchetes como en las listas) y se
separan con coma.
A continuación algunas comparaciones (obvio, con ejemplos :P) de las tuplas con las listas
# Ejemplo
Los elementos de la tupla comienzan a numerarse a partir de cero y utilizamos los corchetes para
hacer referencia al subíndice
# Ejemplo
# Ejemplo
# Ejemplo
Canales[-4]
'Canal 13'
Esto da…
Telefe
Canal 13
America
Utilisima
Tele sur
* Las tuplas son más rápidas ya que como no hay métodos, los valores son constantes.
* Pueden formar parte de un diccionario
Colecciones que vinculan una clave(puede ser una cadena, un entero, tuplas) y un valor (puede ser
cualquier tipo de dato, incluyendo otros diccionarios), les dejo algunas comparaciones con otros
lenguajes (si es que programan en otra cosa)
* Un diccionario en Python es como un hash en Perl. En Perl, las variables que almacenan
hashes siempre empiezan con un carácter %. En Python las variables se pueden llamar de
cualquier manera, y Python sabe su tipo internamente.
Datosazar = {'Perros':'Celular','Sprite':48}
print ['Perros'] #Esto da como resultado 'Celular' que es el valor de la clave 'Perro'
print Datosazar # Retorna {'Perros': 'Celular', 'Sprite': 48}, que es todo el diccionario
print ['Fifa'] #Da error porque la clave 'Fifa' no existe
Es importante remarcar además que se pueden obtener los valores por sus claves pero no las claves
por sus valores
# Ejemplo
Datosazar = {'Perros':'Celular','Sprite':48}
print ['Sprite'] # Da 48
print [48] # No da Sprite sino error
Hay que aclarar que en los diccionarios se diferencian las mayúsculas de las minúsculas, entonces
'Perro':'Animal'
No es lo mismo que 'perro':'animal'
# Ejemplo
Datosazar = {'Perros':'Celular','Sprite':48}
Datosazar['Sprite'] = 'Bebida'
print Datosazar
Resultado:
IMPORTANTE un diccionario no puede tener claves duplicadas, asignar un valor nuevo a una clave
existente elimina el valor antiguo.
# Ejemplo
# Ejemplo
# Usando dict()
Lo que hace dict() es construir diccionarios directamente a partir de listas de parejas clave-valor
guardadas como tuplas.
# Ejemplo
Retorna…
# Funciones
Acá les dejo una introducción a las funciones, que ya profundizaré en el paper siguiente
La estructura de los lenguajes estructurados son las funciones. Una Función es básicamente código
que cumple alguna tarea, devuelve un valor y tienen un nombre asignado, si el programador no
específico un valor (Valga la redundancia) de retorno, la función devolverá None.
Nos ayudan a mantener el código organizado, a depurar, y nos da la libertad de utilizar ese código en
otro lado cuando se nos de la gana :P
En Python las funciones se declaran con la palabra def y seguido del nombre de la función y a
continuación los parámetros entre paréntesis, luego los dos puntos y abajo las instrucciones
(identadas).
# Ejemplo
def Wachiturro (Primero, Segundo): #Declaramos la funcion con los parámetros y otras yerbas
print Primero #Incluimos dentro de la funcion las instrucciones
print Segundo #En este caso imprimir la variable 'Primero' y la variable 'Segundo'
Para que este código funcione hay que declarar las variables que se pasan como argumentos y
ejecutar la función.
Fíjense que cuando ejecutamos la función ponemos su nombre y los parámetros (Wachiturro(Primero,
Segundo)) pero no ponemos los dos puntos.
Cuando hacemos que la función corra (última línea) el orden de los parámetros los podemos cambiar.
# Ejemplo
Wachiturro(Segundo, Primero)
Esto da
Y en el caso imprimía
Este sábado Argentina - Uruguay
Ando escaso de ejemplos - Gh0st.C
# Ejemplo
A = 29
B = 4
C = 7
operacion(A,B,C)
operacion(A,C,B)
#Da 50
También se pueden dar los valores directamente, en vez de andar declarando A, B y C, pero el orden
de la operación se mantiene
#Ejemplo
operacion = (50,78,94)
Bueno muchachas/os, hasta acá llego este tutorial, el paper próximo ya estaremos viendo
programación funcional, ente otras.
Thanks.
Gh0st.C