martes, 17 de abril de 2012

Python


Python es un lenguaje de programación creado por Guido van Rossum a finales de los ochentas cuyo nombre está inspirado en el grupo de cómicos ingleses “Monty Python”. Se trata de un lenguaje interpretado o de script, con tipado dinámico (no es necesario declarar el tipo de dato que va a contener una determinada variable), fuertemente tipado (no permite tratar a una variable como si fuera de un tipo distinto al que tiene), multiplataforma (UNIX, Solaris, Linux, DOS, Windows, OS/2, Mac OS, etc.). Se trata además de un lenguaje de programación multiparadigma ya que soporta orientación a objetos, programación imperativa y, en menor medida, programación funcional.

Su sintaxis simple, clara y sencilla; el tipado dinámico, el gestor de memoria, la gran cantidad de librerías disponibles y la potencia del lenguaje, entre otros, hacen que desarrollar una aplicación en Python sea sencillo y rápido.

Algunos casos de éxito en el uso de Python son Google, Yahoo, la NASA, Industrias Light & Magic, y todas las distribuciones Linux, en las que Python cada vez representa un tanto por ciento mayor de los
programas disponibles.

Ligas de interés acerca de Python:
 
 A continuación se presentan algunos ejercicios de programación en Python:


#!/usr/bin/python

print "\n******* Entrada desde teclado *********\n"

#lee la linea desde teclado y la regresa como cadena de caracteres
str1 = raw_input("Entrada 1: ");
print "Entrada recibida : ", str1

#lee la linea desde teclado y la recibe como una expresion valida de Python
str2 = input("Entrada 2: ");
print "Entrada recibida : ", str2

print "\n********Acceso a subcadenas de una cadena*******\n"

str3='Monica Guadalupe Elizondo Amaya'
print "str3: ", str3
print "str3[0], str3[7], str3[17], str3[26]: ", str3[0], str3[7], str3[17], str3[26] 
print "str3[0:5]", str3[0:5]

print "\n********Algunos ejemplos de manejo de listas*******\n"

x=2
y='hola'
z=1.4

lista1 = ['Monica', 2013, 0.5, x,y,z];
lista2 = [3,5,8,9,5,7,5];
lista3 = lista1+lista2

print "lista1: ", lista1
print "lista2: ", lista2
print "lista3:", lista3
print "lista2[1:4]: ", lista2[1:4]
del lista1[2];                 #borra el elemento en la posicion 2 de lista1
lista1.remove(1.4)             #borra un elemento especifico de lista1, aqui tomo el valor de z 
lista1.append('tu')            #inserta la cadena al final de la lista
lista1.insert(0,z)             #inserta el elemento en la posicion 0 de lista1, aqui inserto z
print "lista1 modificada: ", lista1
print "x en lista1: ", x in lista1
print "2 en lista1: ", 2 in lista1
print "'Monica' en lista1: ", 'Monica' in lista1
print "'on' en lista1: ", 'on' in lista1
print "'4' en lista1: ", 4 in lista1
print "Numero de repeticiones del 5 en lista 2: ", lista2.count(5)
print "Indice de primera aparicion del 5 en lista 2: ", lista2.index(5)

print "\n********Diccionarios*******\n"

dict = {'Nombre': 'Miguel', 'Edad': 27, 'Ciudad': 'Monterrey', 'Turno': 'Matutino', 'Salon': 401};

print dict;
print "dict['Nombre']: ", dict['Nombre'];
print "dict['Edad']: ", dict['Edad'];
print "dict.keys(): ", dict.keys();
print "dict.values(): ", dict.values();
items=dict.items();
print "items=dict.items(): ", items;
item=items[1];
print "item=items[1]: ", item;
print "item[0]: ", item[0], "  item[1]: ", item[1];
print "usando sorted: ", sorted(dict.keys());

print "\n\n"

A continuación se muestra la salida:

El siguiente programa imprime las palabras de un archivo de texto su el número de repeticiones. Se escoge entre imprimir todas en orden alfabético o imprimir las 10 palabras más repetidas.

#!/usr/bin/python 

#el modulo sys contiene informacion sobre el sistema
import sys

# Regresa un diccionario que mapea cada palabra del archivo con su contador  
def word_count_dict(filename):

  word_count = {}  
  input_file = open(filename, 'r')
  for line in input_file:
    words = line.split()    #regresa el numero de palabras en la linea
    for word in words:
      word = word.lower()   #Convierte todas las letras mayusculas a minusculas

      if not word in word_count:
        word_count[word] = 1
      else:
        word_count[word] = word_count[word] + 1
  input_file.close()  
  return word_count

#imprime en cada linea cada palabra del archivo y su contador en orden alfabetico
def print_words(filename):

  word_count = word_count_dict(filename)
  words = sorted(word_count.keys())
  for word in words:
    print word, word_count[word]

# regresa el contador de la dupla palabra:contador 
def get_count(word_tuple):
  return word_tuple[1]

#imprime el la lista top 10  del archivo de texto
def print_top(filename):

  word_count = word_count_dict(filename)

  # items es el conjunto de duplas
  # Ordena las palabras en del diccionario en orden no creciente respecto a sus apariciones
  # key es una funcion que transforma cada elemento a ser comparado, en este caso se utiliza para extraer el contador de la dupla palabra/contador
  items = sorted(word_count.items(), key=get_count, reverse=True)

  for item in items[:10]:
    print item[0], item[1] 

def main():
  if len(sys.argv) != 3:
    print 'argumentos: ./contador.py {count | topcount} filename'
    sys.exit(1)

  option = sys.argv[1]
  filename = sys.argv[2]
  if option == 'count':
    print_words(filename)
  elif option == 'topcount':
    print_top(filename)
  else:
    print 'opcion desconocida: ' + option
    sys.exit(1)

if __name__ == '__main__':    #es de utilidad para cuando este modulo es re-utilizado en otro modulo
  main()                      #para identificar que el main se realize solo cuando se ejecuta este modulo.

Salidas del programa imprimiendo todas las palabras del texto en orden alfabético y las 10 mas repetidas.


No hay comentarios:

Publicar un comentario