Está en la página 1de 17

Pequeña intro…

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
gh0st.c@latinmail.com, 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.

Consejos para la comodidad del


programador

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.

# El espacio y orden en su escritorio.


Cuando digo escritorio me refiero al espacio físico (el mueble), en mi caso, soy muy desordenado, pero
intento mantener el orden, Sino cuando necesito algo me pongo histérico porque no lo encuentro. El
espacio para poder poner nuestras cosas del momento, como café, mate :D, chervecha (a lo
Amigacho :P) o lo que necesiten para mantenerse despiertos :P

# 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.

# str(), int(), type () - Conversiones y llamadas.


Python posee funciones interesantes, estas, toman como argumento un valor o variable, que va entre
paréntesis, y retornan un resultado, llamado valor de retorno. Algunas de estas utilidades
interesantes son:

# 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'>

# str(), que convierte cualquier tipo de dato en cadena.

# Ejemplo

Edad = 48
EdadStr = str(Edad)
print EdadStr

# int(), que toma un valor y lo convierte en entero, si es posible, o si no, se queja

# 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

Gh0st = raw_input('Edad ----> ')


#Aunque acá pongan un número (como es lógico) se va a guardar como cadena de texto.

# Ejemplo

>>> input ('Cantidad de talleres que lee ---->


')
Cantidad de talleres que lee ----> 5
5

Esto no da error porque es un número y esta especificado, pero sí metemos otro tipo de dato, como
string, ¿Que pasará?

>>> input ('Nick ----> ')


Nick ----> Gh0st
File "<string>", line 1, in <module>
NameError: name 'Gh0st' is not defined

Acá vemos el error, Gh0st es un string, no un número, para solucionarlo hay que indicarle a Python
que dato es.

>>> input ('Nick ----> ')


Nick ----> 'Gh0st'
'Gh0st'
En la segunda línea pueden ver que Gh0st esta entre comillas (simples o dobles), o sea , estamos
diciendo que el valor que ingresamos es un string.
En fin, para ahorrarnos líneas, si necesitamos que se ingrese un número a modo de int o float usamos
el input, para no tener que andar convirtiendo luego, pero si queremos a modo de string, usamos
raw_input.

# 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())

Teoría Paper Nº3

A partir de ahora arrancan los contenidos teóricos del paper N°3.

# 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

Esto da una lista desde el 15 hasta el 50, saltando de 2 en dos, o sea:

[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

Ese in que está ahí, lo verán más adelante

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

Talleres = ['Python', 'Php', 4, 'C ', True]

Para acceder a un Elemento X de la lista escribimos el nombre de la lista y luego la posición de


nuestro elemento entre corchetes. Recuerden que el primer elemento ('Python') tiene el número [0] y
no el [1]

# Ejemplo

print Talleres[3] #Les va a dar 'C '

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

#Modificamos un valor de la lista

Underc0de = ['Moderador', 'Moderador Global', 'Tutor', 'Lammers']


print Underc0de[3]#Imprime Lammers
Underc0de[3] = 'Co-Admin' #Modificamos su valor
print Underc0de[3] #Da Co-Admin

# Declarar y acceder a un elemento de una lista que esta dentro de otra

Argentina = ['Pipita', 'Romero', ['Marandona', 'Kempes'], 'Messi']


OldSchool = Argentina[2][1] # O sea que OldSchool vale 'Kempes'

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.

# Indices negativos en las listas

Un índice negativo permite acceder a las listas del ultimo valor hacía el primero.

# Ejemplo

Murgas = ['Agarrate Catalina', 'La Margarita', 'Araca la Cana']


print Murgas[-1]#'Da Araca la cana' que es lo mismo que print Murgas [2]

# Para comprobar si un valor se encuentra de X lista, se utiliza un if más el operador in


(en/adentro en español).

# 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'

# Como recorrer una lista con For in

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

Zeppelin = ['Bonzo Bonham', 'Plant', 'Page', 'Jones', 'Groupies']


for Integrantes in Zeppelin:
print Integrantes

# Añadir elementos a una lista

Para agregar elementos a una lista ya existente nos valdremos de 3 métodos, append, insert, y
extend. Veamos.

# Ejemplo append

Provincias = ['Jujuy', 'Santa Cruz', 'San Juan']


Provincias.append('Tierra del Fuego')
print Provincias

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

Provincias = ['Jujuy', 'Santa Cruz', 'San Juan']


Provincias.append(['Tierra del Fuego','Cordoba','Buenos Aires'])
print Provincias

El resultado

['Jujuy', 'Santa Cruz', 'San Juan', ['Tierra del Fuego', 'Cordoba', 'Buenos Aires']]

# Ejemplo insert

Provincias = ['Jujuy', 'Santa Cruz', 'San Juan']


Provincias.insert(1,'Tierra del Fuego')
print Provincias

Retorna :

['Jujuy', 'Tierra del Fuego', 'Santa Cruz', 'San Juan']


Bueno, acá la cosa es un poco más específica, porque podes aclarar la posición de tu nuevo elemento,
en este caso la 2 para 'Tierra del Fuego'.

# Ejemplo extend

Provincias = ['Jujuy', 'Santa Cruz', 'San Juan']


Provincias.extend(['San luis', 'La Pampa'])
print Provincias

Esto deriva en:

['Jujuy', 'Santa Cruz', 'San Juan', 'San luis', 'La Pampa']

# Operadores + Listas = Buena combinación

Ahora veremos como multiplicar y sumar las listas

# Ejemplo Suma

Cual = ['JJlopez','Tano pasman','Aguilar']


Dimebag = ['River', 'Youtube']
Cualbag = Cual Dimebag
print Cualbag #Devuelve una nueva lista con los 5 valores.

# O así

Cual = ['JJlopez','Tano pasman','Aguilar'] ['River',


'Youtube']
print Cual #Devuelven lo mismo pero este ocupa menos líneas

# Multiplicación

Dimebag = ['River', 'Youtube'] *3


print Dimebag

# O también

Dimebag = ['River', 'Youtube']


Dime = Dimebag * 3
print Dime

Retorna:

['River', 'Youtube', 'River', 'Youtube', 'River', 'Youtube']


# Buscando valores dentro de una lista

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

Aborigenes = ['Calfulcura','Tupac Amaru','Tupac Amaru II','Araucanos']


print Aborigenes.index('Calfulcura')
#Esto devuelve 0 porque es la posición donde esta 'Calfulcura'
print Aborigenes.index('Sarmiento')
#Esto tira error porque Sarmiento (gracias a dios :P) no está dentro de la lista

# Borrando elementos de una lista

Esto se puede lograr mediante del pop o remove. A ver...

# Ejemplo (del)

Bebidas = ['Cafe','Mate','Mate Cocido','Fernet']


del Bebidas[1] # Se elimina 'Mate'

También podemos eliminar más de un valor.

del Bebidas[0:2]

Esto deja solo 'Mate Cocido' y 'Fernet'

Inclusive podemos borrar una lista completa

del Bebidas

# ¿Que es esto de pop?

Más que simple, pop() elimina el ultimo elemento de la lista y devuelve el valor que elimino.

# Ejemplo

Bebidas = ['Cafe','Mate','Mate Cocido','Fernet']


Bebidas.pop()
Fernet

# Ahora aprendamos a usar remove


Bebidas = ['Cafe','Mate','Mate Cocido','Fernet']
Bebidas.remove('Fernet') #Elimina fernet de la lista

# Slicing

El particionado o slicing permite seleccionar partes de una lista.


Se define con el nombre de la lista (Superheroes) y luego los índices, que serían principio(la posición
1) y el fin (la posición 5), con esto, Python entiende que queremos una nueva lista que vaya desde el
valor 1 (en este caso) hasta el valor 5, sin incluir este último (Por eso no se imprime 'Iron man').

# 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.

# Como ahorrar caracteres cuando hacemos slicing.

Azar = ['Truco', 'Sapo', 'Mosca', 'Casita Robada', 'Blackjack', 'Rifa']


Slice = Azar[:2]#Esto es como poner Azar[0:2]
Slice = Azar[2:]#Devuelve los 4 ultimos datos
Slice = Azar[:]#Devuelve todos los elementos de Azar, pero ahora, en una lista nueva
Slice = Azar[0:7:]#Si no hay un último valor, se torna cero (0)

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

Tupla = ('Uno', 'Dos', 'Yoko Ono')

Los elementos de la tupla comienzan a numerarse a partir de cero y utilizamos los corchetes para
hacer referencia al subíndice

# Ejemplo

Tupla = ('Uno', 'Dos', 'Yoko Ono')


print Tupla[1]
# Da 'Dos'

En la tupla también existe el slicing

# Ejemplo

Canales = ('Telefe', 'Canal 13', 'America', 'Utilisima', 'Tele sur')


Slice = Canales[:3]
print Slice #Esto devuelve ('Telefe', 'Canal 13', 'America')

En la tupla, los índices negativos cuentan desde el final, como la lista

# Ejemplo

Canales[-4]
'Canal 13'

En la tupla también podemos usar el for in :D

Canales = ('Telefe', 'Canal 13', 'America', 'Utilisima', 'Tele sur')


for loqueseteantoje in Canales:
print loqueseteantoje

Esto da…

Telefe
Canal 13
America
Utilisima
Tele sur

La tupla no tiene métodos, no hay append, insert, remove, index, nada.

Pero.... ¿Tienen alguna ventaja?


MÁS VALE :P

* Las tuplas son más rápidas ya que como no hay métodos, los valores son constantes.
* Pueden formar parte de un diccionario

* Mantienen el código seguro ya que no permiten que se modifiquen

# Diccionarios (o matrices asociativas)

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.

* Un diccionario en Python es como una instancia de la clase Hashtable de Java.

* Un diccionario en Python es como una instancia del objeto Scripting.Dictionary de Visual


Basic.

# Para crear un diccionario procedemos así...

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'

# Para modificar un diccionario solo usamos simples asignaciones.

# Ejemplo
Datosazar = {'Perros':'Celular','Sprite':48}
Datosazar['Sprite'] = 'Bebida'
print Datosazar

Resultado:

{'Perros': 'Celular', 'Sprite': 'Bebida'}


ahí cambió

IMPORTANTE un diccionario no puede tener claves duplicadas, asignar un valor nuevo a una clave
existente elimina el valor antiguo.

# Para borrar elementos de un diccionario usamos del

# Ejemplo

Datos = {'Perros': 'Celular', 'Sprite': 'Bebida'}


del(Datos['Perros'])
print Datos #Da {'Sprite': 'Bebida'}

Se puede borrar todo un diccionario.

Datos = {'Perros': 'Celular', 'Sprite': 'Bebida'}


del Datos

# Con clear() limpiamos el diccionario, o sea queda en blanco, pero no se elimina

Datos = {'Perros': 'Celular', 'Sprite': 'Bebida'}


Datos.clear()

# Para comprobar si una clave ya existe usamos el método has_key().

# Ejemplo

Datos = {'Perros': 'Celular', 'Sprite': 'Bebida'}


Datos.has_key('Perros')
True # Da True, porque es verdad que perros es una clave que esta en Datos
Datos.has_key('Doberman')
False #False, ya que no es verdad que doberman esta en Datos

# Usando dict()

Lo que hace dict() es construir diccionarios directamente a partir de listas de parejas clave-valor
guardadas como tuplas.
# Ejemplo

Tupdicc = dict([('Hola', 44), ('Carlos', 'Fulgencio' )])


print Tupdicc

Retorna…

{'Carlos': 'Fulgencio', 'Hola': 44}

# 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.

Primero = 'Este sábado Argentina - Uruguay' #Declaramos las variables


Segundo = 'Ando escaso de ejemplos - Gh0st.C'
Wachiturro(Primero, Segundo) #Ejecutamos 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

Ando escaso de ejemplos - Gh0st.C


Este sábado Argentina - Uruguay

Y en el caso imprimía
Este sábado Argentina - Uruguay
Ando escaso de ejemplos - Gh0st.C

Veamos otro ejemplo.

# Ejemplo

def operacion (A,B,C):


print A*B/C

A = 29
B = 4
C = 7
operacion(A,B,C)

Esto devuelve 16.


Si cambiamos el orden de los valores, cambiara el resultado.

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

También podría gustarte