hola
Chema Cortes
py en ch3m4.org
Sab Sep 30 12:36:57 CEST 2006
El Sábado, 30 de Septiembre de 2006 00:16, Hector Fabio Bonilla Londono
escribió:
> hola amigos necesito desde hace algunos dias quien pueda amabablemente
> resolver unas dudas a un proyecto necesito ordenar una lista de gastos de
> una empresa pero primero tomo un archivo aqui lo adjunto y revise el codigo
> de en archivo parte,py
Primero algunos comentarios constructivos: acostumbra en los mensajes a poner
un asunto lo más descriptivo posible de tu consulta (pe: "ordenación de un
fichero de gastos", etc).
Sobre tu programa:
from list import *
from string import *
from record import *
from types import *
Evita todo lo que puedas el from..import * Debería estar prohibido usarlo en
un programa. Está bien para trabajar en modo línea de comandos, pero en un
programa puede ser origen de fallos y conflictos. Es conveniente especificar
qué importamos de cada módulo, o usar siempre el nombre del módulo para
identificar de dónde provienen cada cosa.
Por otro lado, no suele ser necesario importar los módulos list ni string. El
módulo 'record' supongo que será alguno que hayas introducido aparte.
fichero=open("ResultadosEnero.txt","r");
tabla=[]
contador=0
salida=open("gastosEnero.txt","w")
while 1:
linea=fichero.readline()
contador+=1
if contador<=5:
continue
salida.write(linea)
if linea=='':
break
salida.close()
fichero.close()
Este trozo es tan frecuente en python que para hacerlo bien sólo hay que
copiar de otros códigos:
salida=open("gastosEnero.txt","w")
for linea in open("ResultadosEnero.txt")
salida.writeline(linea) # print >>salida, linea
salida.close()
Te faltaría todo el procesamiento del fichero dentro del bucle. Será mejor
dejar el resto de tu código para darte uno más orientativo (aunque no es el
mejor posible):
sucursales=("Antejardín","Tequendama","Vipasa")
fentrada="ResultadosEnero.txt"
fsalida="gastosEnero.txt"
tabla=[]
for linea in file(fentrada):
tabla.append(linea.split())
#abrir salida
salida=open(fsalida,"w")
#Por cada sucursal
for i in range(3):
data=[ (x[0],x[1],float(x[i+2])) for x in tabla ]
data.sort(key=lambda x:x[2])
media=sum([x[2] for x in data])/len(data)
#sacar resultados
print >>salida, "Resultados de",sucursales[i]
for x in data:
print >>salida, x[0],x[1],x[2]
print >>salida, "Promedio de gastos",media
salida.close()
FALLOS que tiene el código:
- al leer del fichero, hay que eliminar las líneas de cabecera
- los títulos de gastos tienen espacios, por lo que falla el .split() Lo ideal
sería que los campos estuvieran separados por tabuladores, pero si no es así,
habría que solucionarlo de otra manera, e incluso recurrir al procesamiento a
través de expresiones regulares.
------------ próxima parte ------------
_______________________________________________
Python-es mailing list
Python-es en aditel.org
http://listas.aditel.org/listinfo/python-es
Más información sobre la lista de distribución Python-es