import sys import random import time def buscar_coincidencias(palabras, cadena): # creo una lista vacia coincidencias = [] # recorro la lista de palabras for palabra in palabras: # pregunto si empieza con la cadena if palabra.startswith(cadena): # si empieza con esta cadena # la agrego a la lista de coincidenas coincidencias.append(palabra) return coincidencias def buscar_palabras_aleatoreas(palabras_diccionario): # busco palabras de mas de 7 # caracteres cada una y obtengo # solo los primeros 5 palabras = [p[:-2] for p in palabras_diccionario if len(p)>7] palabras = [random.choice(palabras)[:5] for x in xrange(CANT)] return palabras if __name__ == "__main__": # guardo el tiempo inicial del comienzo # del programa tiempo_inicial_total = time.time() # creo una lista vacia palabras_diccionario = [] # direccion del diccionario plano # (posee una palabra por linea) diccionario = "diccionariocs.txt" # guardo el tiempo inicial de la carga # del diccionario de palabras tiempo_inicial_carga = time.time() # recorro todo el archivo linea # por linea for linea in open(diccionario, "r"): # cada linea al final tienen "\r\t" # asique elimino esos caracteres linea = linea[:-2] # agrego la palabra a la lista de # palabras palabras_diccionario.append(linea) # hago la resta entre el tiempo actual y # el inicial antes de empezar la carga print "En cargar: %.2f seg" % (time.time() - tiempo_inicial_carga) # controlo que el usuario halla pasado # la cadena a buscar, de lo contrario # hago una busqueda aleatorea if len(sys.argv) == 2: # obtengo la cadena de busqueda cadenas = [sys.argv[1]] # seteo la cantidad de cadenas # a buscar de forma aleatoria CANT = 1 else: # seteo la cantidad de cadenas # a buscar de forma aleatoria CANT = 50 cadenas = buscar_palabras_aleatoreas(palabras_diccionario) print "Cantidad de palabras a buscar:", CANT # guardo el tiempo inicial de # en la busqueda de cada una de # las palabras obtenidas # aleatoriamente tiempo_inicial_busqueda = time.time() for cadena in cadenas: buscar_coincidencias(palabras_diccionario, cadena) print "Busq x palabra: %.2f mseg" % (1000 * (time.time()-tiempo_inicial_busqueda) / CANT)