/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

Tabla de frecuencias (solucion en python)

 
      Índice del Foro elrincondelc.com -> Otros lenguajes
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
RompeRatones



Registrado: 20 Sep 2005
Mensajes: 62

MensajePublicado: 13/10/2006 5:51 am
Título: Tabla de frecuencias (solucion en python)

La solucion en python del problema planteado en
http://www.elrincondelc.com/portal/modules.php?name=Forums&file=viewtopic&t=7625


tomando como como que el archivo que vamos a analizar: el "social contract" de debian ( formato txt: )


con el siguiente programa
Código:
#!/usr/bin/env python
# -*- coding: UTF-8 -*-

#abrimos archivo
f=open("social-contract.txt","r")

#vector de control
control=['a','b','c','d','e','f','g','h','i','j','k','l','m','n','ñ','o','p','q','r','s','t','u','v','w','x','y','z']

#creo un diccionario para indexar cada letra con su contador
contadores={}

#acumula el total de caracteres
total=0


#inicializamos los contadores del diccionario en 0
for i in control:
        contadores[i]=0


#leemos el archivo
for i in f.read():
        total+=1
        #por cada letra que leemos, nos preguntamos si esta tambien dentro de la vector control
        if i in control:
                #si efectivamente coincide aumentamos en 1 su contador
                contadores[i]=contadores[i]+1

# imprimimos resultado
print "Texto con %d caracteres en total" % total
for letra, contador in contadores.items():
        print "%s aparecio %d veces, Frequencia : %.4f" % (letra, contador, (float(contador)/total) )


Para finalmente obtener lo siguiente


El programa solo verifica caracteres dentro abecedario español, no controla si hay simbolos especiales, espacios, signos de puntuacion o numeros) pero si los cuenta para sacar el total de caracteres


Para cumplir con la consigna de escribir los resultados en otro fichero, le hacemos una leve modificacion

Código:
#!/usr/bin/env python
# -*- coding: UTF-8 -*-

#abrimos archivo
f=open("social-contract.txt","r")

#vector de control
control=['a','b','c','d','e','f','g','h','i','j','k','l','m','n','ñ','o','p','q','r','s','t','u','v','w','x','y','z']

#creo un diccionario para indexar cada letra con su contador
contadores={}

#acumula el total de caracteres
total=0


#inicializamos los contadores del diccionario en 0
for i in control:
        contadores[i]=0


#leemos el archivo
for i in f.read():
        total+=1
        #por cada letra que leemos, nos preguntamos si esta tambien dentro de la vector control
        if i in control:
                #si efectivamente coincide aumentamos en 1 su contador
                contadores[i]=contadores[i]+1

# imprimimos resultado
f=open("frequencias.txt","w")

f.write("Texto con %d caracteres en total\n" % total)
for letra, contador in contadores.items():
        f.write("%s aparecio %d veces, Frequencia : %.4f\n" % (letra, contador, (float(contador)/total) ))

f.close()

_________________
Volver arriba
      Índice del Foro elrincondelc.com -> Otros lenguajes
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com