Python - necesito ayuda para realizar este ejercicio de tickets

   
Vista:
Imágen de perfil de carlos A

necesito ayuda para realizar este ejercicio de tickets

Publicado por carlos A (6 intervenciones) el 31/05/2014 16:17:31
tickets
-año 2)ordenar (merge) por N ticket y mostrar los 10 ultimos
-mes 3)mostrar los 5 usuarios que tiene mas tickets
-dia 4)mostrar cuantos ticket hay por cada tipo
-hora 5)mostrar que tipo-subtipo NO tienen tickets
-minutos
-telefono
-usuario
-n ticket
-tipo 0->4
-subtipo 0->9

preguntas
1)ordenaer (shell) por fecha /hora y mostar los 10 primeros
2)ordenar (merge) por N ticket y mostrar los 10 ultimos
3)mostrar los 5 usuarios que tiene mas tickets
4)mostrar cuantos ticket hay por cada tipo
5)mostrar que tipo-subtipo NO tienen tickets

la idea es ordenar y realizar las consultas del archivo tickets adjunto, quedo atento a sus comentarios ,gracias por su valiosa colaboracion.
adjunto esta el archivo TXT tickets que contiene toda la informacion.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Roker

necesito ayuda para realizar este ejercicio de tickets

Publicado por Roker (3 intervenciones) el 01/06/2014 21:03:12
Vi el txt y como no tengo tiempo y no entendi bien,te recomiendo usar bucles y listas con "split" de ":" asi clasificar una lista bucleada que tenga cada uno de los datos para asi poder comaparlos facilmente
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Roker

necesito ayuda para realizar este ejercicio de tickets

Publicado por Roker (3 intervenciones) el 26/06/2014 19:53:39
Aca les dejo el codigo sinterminar,para los que no pudieron ahcerlo o solo quieren verlo..

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
archivo =  open("tickets.txt")  #se abre el archivo de tickets
base = []                       #buffer temporal
basetipos = []
 
columna_tickets = 0
columna_tipos = 0
columna_subtipos = 0
 
 
for i in archivo:               #intera sobre el archivo
	base.append(i.split(":"))   #corta por el ":" y divide datos
	p = i.split(":")
	c =p[7:9]
	c.reverse()
	basetipos.append(c)
 
def shellsort (lista) :         #algoritmo shellsort
  incri=len(lista)/2
  while (incri>0) :
    for i in range(incri,len(lista)) :
      j=i
      temporal=lista[i]
      if temporal == len(lista)-1:
		  break
      while ( (j>=incri) and (lista[j-incri]>temporal) ) :
        lista[j]=lista[j-incri]
        j=j-incri
      lista[j]=temporal
    if (incri==2) : incri=1
    else : incri=int(incri/2.2)
  return lista
def mergesort(lista):           #algoritmo mergesort
  if len(lista) == 1:
    return lista
  else:
    corta1 = mergesort(lista[:len(lista)//2]) 
    resulta = []
    corta2 = mergesort(lista[len(lista)//2:]) 
    while (len(corta1) and len(corta2)):
      resulta.append(corta1.pop(0)) if (corta1[0] <= corta2[0]) else resulta.append(corta2.pop(0))
    return resulta + corta1 + corta2
def ordenarshell(ini,fin): #ordena tomando el numero de datos de la lista base
	dic = {}
	c = 0
	for i in base:
		g =base[1:]
		y =  g[c]
		dor =  i[ini:fin]
		doc =":".join(str(v) for v in dor)
		dic[doc] = i[0:]
		c+=1
		if c == len(base) -1:
			break
	e = 0
	l = dic.items()
	a =  shellsort(l)
	h = 0
	g  = []
	for i in range(0,10):
		g.append(a[len(a)-h-1])
		h+=1
	return g
def ordenarmerge(ini,fin): #hace lo mismo que el anterior pero con el algoritmo merge
	dic = {}
	c = 0
	for i in base:
		g =base[1:]
		y =  g[c]
		dor =  i[ini:fin]
		dic[i[7]] = i[0:]
 
		c+=1
		if c == len(base) -1:
			break
	e = 0
	l = dic.items()
	a =  mergesort(l)
	h = 0
	g = []
	return a
def ordenarmerge2(ini,fin): #hace lo mismo que el anterior pero con el algoritmo merge
	dic = {}
	c = 0
	for i in base:
		g =base[1:]
		y =  g[c]
		dor =  i[ini:fin]
		dic[i[7]] = i[0:]
 
		c+=1
		if c == len(base) -1:
			break
	e = 0
	l = dic.items()
	a =  mergesort(l)
	h = 0
	g = []
	for i in range(0,10):
		g.append(a[len(a)-h-1])
		h+=1
	return g
c = 0
#orden fechas
base_datos_fechas = ordenarshell(0,5)
print ("=====================ORDEN DE FECHAS")
print ("Fecha:                 Usuario:")
print ("                               ")
for i in base_datos_fechas:
	k = i[1]
	print (i[0],"     ",k[6])
	c+=1
	if c==10:
		break
#orden numeros
base_datos_numtick = ordenarmerge(7,8)
print ("")
print ("==================ORDEN POR NUMERO DE TICKETS    ")
print ("Numero de Tickets:            Usuario:")
print ("                                        ")
cc = 0
for i in base_datos_numtick:
	k = i[1]
	print (i[0],"     ",k[6])
	cc+=1
	if cc==10:
		break
#orden 5 que tienen mas
base_datos_maxtick = ordenarmerge2(7,8)
print ("")
print ("==================ORDEN POR NUMERO DE TICKETS    ")
print ("Numero de Tickets:            Usuario:")
print ("                                        ")
cc = 0
for i in base_datos_maxtick:
	k = i[1]
	print (i[0],"     ",k[6])
	cc+=1
	if cc==10:
		break
 
basetipos.sort()
tipos = []
 
 
"""
for i in basetipos:
	tickets = i[0]
	tipo = i[1]
	print "Los Tipo:",tipo," Tienen",tickets
"""

lo hice yo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar