jueves, 30 de junio de 2011

Python: Como saber si una variable esta vacia?

Como podemos saber si una variable en Python esta vacía?

Es sencillo:

1- Preguntemos por su longitud.
2- Si esta longitud es Cero; entonces la variable esta vacia.

nota: Recuerden que en Python todo es un objeto.

Ejemplo:

>>>lista=list() # Creamos el objeto lista.
>>>len(lista)    # Preguntamos por su longitud.
0
>>>lista.append(1) # Agregamos un elemento.
>>>len(lista)    # Preguntamos por su longitud.
1

Como vemos al crear el objeto lista, este esta vaciopor lo que su longitud es cero. Al agregar un elemento, ya su longitud no es cero.

Hagamos una funcion que nos diga si una variable esta vacía o no.

def nula(variable):       # Implementamos la funcion.
  if(len(variable)==0):  # Preguntamos por la longitud de la variable.
    return True             # Si es 0 la funcion devuelve Verdadero(True)
  else:
    return False            # Si la funcion no es cero, devolvemos Falso(False)

Entonces el ejemplo quedaria:
>>>lista=list()
>>>nula(lista) # Utilizamos la funcion implementada.
True
>>>lista.append("hola")
>>>nula(lista)
False

Espero que esta respuesta sobre variables vacias sin elementos les puedan ser de utilidad.


miércoles, 22 de junio de 2011

modelado en Python de una pila a travez de la clase list()

"""
En este ejemplo se muestra como se puede modelar la estructura de datos de una pila a travez de la clase list().
Para hacer esto se crea una nueva clase llamada "pila" que hereda de la clase list()
"""



class pila(list): # Hereda de la clase list().
 def intdata(self, data): # Metodo para introducir datos.
   self.append(str(data)) # Se insertan elementos en el ultimo lugar de la lista.
 def outdata(self):       # Metodo para extraer datos.
   findex=len(self)-1     # Se obtiene la longitud de la lista.
   result=self[findex]    # Se Copia ultimo elemento de la lista.
   del self[findex]       # Se Borra este ultimo elemento.
   return result          # Se retorna el ultimo elemento copiado anteriormente.



# Ejemplo:

p=pila() # Se crea el objeto de la clase pila
print "Se muestra la Pila Vacia:"
print p  # Se muestran los elementos de la lista. En este caso la lista esta vacia.
print "Se insertan los elementos uno a uno"
for i in range(5): # Se crear un clico para introducir datos.
  p.intdata(i)     # Se inserta cada elemento.
  print p          # Se van mostrando los elementos ya insertados.
print "Se muestrab todos los elementos"
print p            # Se muestran todos los elementos de la lista.
print "A continuacion se van a ir extranendo los elementos: uno a uno"
for i in range(5): # Se crear un clico para extraer los datos datos.
  p.outdata()      # Se va extraindo dato a dato.
  print p          # Se muestran los elementos que van quedando
print "La lista nuevamente queda vacia"
print p            # Finalmente se muestra la lista nuevamente vacia.

miércoles, 8 de junio de 2011

Mis memoria de la infancia.

He estado pensando en escribir un libro sobre mis memorias de la infancia:
  • El vehículo lunar de juguete que me trajo mi papa de la URSS.
  • La profesora que me regaño por dibujar un pintura abstracta, argumentandome indisciplina.
  • La primera vez que fui al mercado de 5ta y 42. Dije: "Aqui no hay periodo especial".
  • Mi imaginación desbordante que me asustaba en la oscuridad.


Algunas lineas que escribi de Ciencia Ficcion

En un ascensor de la base Comand-Nurv. El Mayor Rainod Maxwell se
encuentra con el agente especial Druk Golk. Ambos están para salir en
una misión de campo juntos.

Rainod: -Donde andas con tanta prisa?.
Druk: -Jejejejej, estoy de nuevo adentro.
Rainod: -No te habían sustituido?.
Druk: -Sabes que dicen de los buenos pilotos, “nunca lo sustituyen hasta
que caen”.
Rainod: -Jejejej Muchacho extrañas estar en primera linea.
Druk: -Esa es mi adicción. Una vez que entras a este trabajo nunca te
sales. Simplemente te adaptas a entrar en el infierno y arreglarlo.
Cuando esta en la paz, solo quieres regresas a la guerra a lograr la
paz; pero a la vez no soportas la paz. Es como querer llegar a la meta
para alejarte de nuevo.
Rainod: - No quiero locuras muchacho, que luego tengo que resolver la
basura que me dejas.
Druk: - Usted es el jefe. No pienso volar por encima del radar.
Rainod: - Conozco bien tu historia aquí en la Bace C-Nurv, pero ya no
tienes a ese gigante de hierro al que piloteabas.
Druk: -Espero Mayor Rainor que sus habilidades como soldado sean tan
atrevidas bajo fuego enemigo, como lo son sus palabras ahora.

lunes, 6 de junio de 2011

Script en Python para contar la cantidad de direcciones de email en total de distintos archivos..

#!/usr/bin/env python

""" Este modulo esta hecho para contar la cantidad de correos dentro de una lista de archivos.
    Utiliza la clase counting para recolectar todos lo caracteres y sumas la cantidad arrobas que encuentra.
    Se puede utilizar con archivos Txt, pero en general funciona con todo archivo que en las direcciones de email,
    este explicitamente en el contenido de los ficheros sin ningun tipo de encriptacion ni ocultacion.
"""

class counting(): # Clase para contar la cantidad de arrobas.
 def __init__(self): # Metodo Constructor.
  # self.lparams para declarar los archivos a utilizar.
  self.lparams=["correojaveriana","correos","Correos COLPATRIA", "empresas computrabajo", "reenviar todas las semanas"]
  self.iresult=int(0) # Se inicia la variable que devuelve la informacion de la cantidad de arrobas.
  self.sinformation=str() # Lista para guardar la informacion inicial Total.
 def upload(self): # Metodo que carga la informacion inicial Total.
  for i in self.lparams: # Ciclo para cargar la informacion de archivo por archivo.
   f=file(i,"r") # Se accede por el metodo de lectura a cada archivo.
   s=f.read() # Se copia la informacion de cada archivo por medio de listas.
   self.sinformation+=s # Se copia en la lista general que va a contener una lista de las lista con la informacion.
   f.close() # Se Cierra cada archivo.
 def procesor(self): # Metodo para procesar toda la informacion.
  index=0 # Se comienza por cero el contador del ciclo. Para recorrer desde un principio la cadena general.
  while(True):
   index=self.sinformation.find("@", index) # Buscar arrobas.
   if(index==-1 or index>len(self.sinformation)): # Estas condiciones son para saber cuando la funcion str().find no encuentra arrobas y para que no se pase del rango de longitud de la cadena general. Entonces se detiene el ciclo.
    break
   self.iresult+=1 # Se incrementa la cantidad.
   index+=1 # Se incrementa en 1 el contador para el proximo uso del la funcion str().
 def out(self): # Metodo para dar salida a la informacion de la cantidad de arroba de los archivos.
  print self.iresult # Se imprime en pantalla el resultado.
  f=file("out-counting","w") # Se crea y abre un archivo para guardar la informacion de salida.
  f.write(str(self.iresult)) # Se guarda la informaci0n de salida, convirtiendo el numero en cadena.
  f.close()                  # Se cierra el archivo.

# Acontinuacion se ejecuta el codigo implementado.
a=counting() # Se crea un objeto de la clase implementada.
a.upload()   # Se invoca al metodo para cargar la informaci0n inicial.
a.procesor() # Se procesa la informacion cargada.
a.out()      # Se da salida al resultado obtenido.