Ejercicio: 1Eva_IT2016_T2 historial de visitas web
literal a. Se obtiene un registro
de los sitios visitados
, para luego separar sus partes entre empleado|sitio|duracion
.
Para los sitios que no son de trabajo
se usa una lista llamada ocio
. Si el sitio visitado no se encuentra en trabajo
, se añade a la lista ocio
. Se considera revisar que la lista no tenga elementos repetidos
# a) sitios que no son de trabajo ocio = [] n = len(visitados) i = 0 while not(i>=n): registro = visitados[i] partes = registro.split('|') sitio = partes[1] if not(sitio in trabajo): if not(sitio in ocio): ocio.append(sitio) i = i + 1
literal b. Par contabilizar el tiempo por empleado se acumula en una lista los tiempos de navegación, usando la posición del empleado en la lista obtenida con la instrucción empleados.index(quien)
# b) tiempo de internet/empleado m = len(empleados) tiempo = np.zeros(m,dtype=int) n = len(visitados) i = 0 while not(i>=n): registro = visitados[i] partes = registro.split('|') quien = partes[0] indice = empleados.index(quien) cuanto = int(partes[2]) tiempo[indice] = tiempo[indice] + cuanto i = i + 1
Se procede de forma semejante para obtener una tabla de tiempos por sitio.
Una respuesta que se pude obtener de la tabla anterior es la búsqueda del empleado más ocioso, el que ha usado más tiempo en sitios de ocio
. (tema 3, literal f)
Algoritmo en Python
# CCPG1001 Fundamentos de Programación FIEC-ESPOL # 1Eva_IT2016_T2 historial de visitas web import numpy as np # INGRESO visitados = [ 'maria2|www.facebook.com|160', 'xavi7|www.eluniverso.com|50', 'jose15|www.sri.gob.ec|30', 'maria2|www.twitter.com|30', 'xavi7|www.inec.gob.ec|10', 'maria2|www.espol.edu.ec|50', 'jose15|www.sri.gob.ec|120', 'xavi7|www.sri.gob.ec|20', 'maria2|www.twitter.com|20',] empleados = ['maria2', 'jose15', 'xavi7'] trabajo = ['www.espol.edu.ec', 'www.inec.gob.ec', 'www.sri.gob.ec'] # PROCEDIMIENTO # a) sitios que no son de trabajo ocio = [] n = len(visitados) i = 0 while not(i>=n): registro = visitados[i] partes = registro.split('|') sitio = partes[1] if not(sitio in trabajo): if not(sitio in ocio): ocio.append(sitio) i = i + 1 # b) tiempo de internet/empleado m = len(empleados) tiempo = np.zeros(m,dtype=int) n = len(visitados) i = 0 while not(i>=n): registro = visitados[i] partes = registro.split('|') quien = partes[0] indice = empleados.index(quien) cuanto = int(partes[2]) tiempo[indice] = tiempo[indice] + cuanto i = i + 1 # b) tiempo de internet por empleado/sitio. matrices k = len(visitados) n = len(empleados) todositio = trabajo + ocio m = len(todositio) tabla = np.zeros(shape=(n,m), dtype=int) i = 0 while not(i>=k): registro = visitados[i] partes = registro.split('|') quien = partes[0] fila = empleados.index(quien) donde = partes[1] columna = todositio.index(donde) cuanto = int(partes[2]) tabla[fila,columna] = tabla[fila,columna] + cuanto i = i+1 # Tema 3. f) # empleado es mas ocioso parte = tabla[:,len(trabajo):] ocioempleado = np.sum(parte, axis =1) masocioso = np.argmax(ocioempleado) quien = empleados[masocioso] # SALIDA print('sitios de ocio: ') print(ocio) print('tiempos por empleado: ') print(tiempo) print('tabla de tiempos: ') print(tabla) print('empleado mas ocioso: ', quien)
resultado del algoritmo
sitios de ocio: ['www.facebook.com', 'www.eluniverso.com', 'www.twitter.com'] tiempos por empleado: [260 150 80] tabla de tiempos: [[ 50 0 0 160 0 50] [ 0 0 150 0 0 0] [ 0 10 20 0 50 0]] empleado mas ocioso: maria2 >>>