Ver Mensaje Individual
  #1 (permalink)  
Antiguo 16/02/2012, 06:20
Valkyria
 
Fecha de Ingreso: octubre-2011
Mensajes: 8
Antigüedad: 12 años, 7 meses
Puntos: 0
Pregunta varias funciones en un programa

Buenos días!

Aquí vuelvo con otro problema a la hora de ejecutar un programa muy sencillo en Python.

El programa es el siguiente:

Código Python:
Ver original
  1. def diccionario(fichero):
  2.     d=dict()
  3.     for linea in fichero:
  4.         for palabra in linea.split():
  5.             d[palabra]=d.get(palabra,0)+1
  6.     return d
  7.  
  8. def lista(fichero):
  9.     l=list()
  10.     for linea in fichero:
  11.         for palabra in linea.split():
  12.             i=0
  13.             while i<(len(l)):
  14.                 if l[i][0]==palabra:
  15.                     break
  16.                 i+=1
  17.             if i==len(l):
  18.                 l.append((palabra,1))
  19.             else:
  20.                 l[i]=(palabra,l[i][1]+1)
  21.     return l
  22.  
  23.  
  24. fichero=open(input("Introducir el nombre del fichero: "),"r")
  25.  
  26. l=lista(fichero)
  27.  
  28. d=diccionario(fichero)
  29.  
  30. print (d,l)

Hasta este punto el programa simplemente tendría que abrir un fichero y devolver dos histogramas. Uno en modo de lista y otro a modo de diccionario.

El problema es que solo me imprime el histograma de la función que se ejecuta primero, en ese caso lista(fichero). Me devuelve un diccionario vacío y el histograma completo a modo de lista.

He probado a hacer que se ejecute primero diccionario(fichero) y después lista(fichero) y lo que ocurre es que me devuelve el histograma a modo de diccionario y una lista vacía.

¿Por qué solo se ejecuta correctamente la primera función en ser corrida?

Un saludo y gracias de antemano.